Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150

    [delphi] nome file con ?

    Sto diventando pazzo per un problema delphi che non so come affrontare, ovvero i file che hanno un "?" (punto interrogativo) nel nome

    tipo
    pippo?cheneso.doc

    codice:
      S := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone);
    fallisce miseramente...

    ... come diavolo si aprono questi file in delphi?

    HELPPPPPP!!!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da lanciafiamme
    Sto diventando pazzo per un problema delphi che non so come affrontare, ovvero i file che hanno un "?" (punto interrogativo) nel nome
    File con quei caratteri non sono ammessi da Windows, quindi non esistono.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    Originariamente inviato da alka
    File con quei caratteri non sono ammessi da Windows, quindi non esistono.
    File con quei caratteri esistono, eccome
    codice:
    12/11/2002  16:31           495.434 Polizza Responsabilit? Civile Fabbricati 11.27 ed. 2002.pdf
    24/07/2002  22:09         1.611.559 Responsabilit? Civile Aziende Agricole Mod. 11.25 N.T. Ed. 3-00.pdf
    27/07/2002  12:37         1.073.265 Responsabilit? Civile Fabbricati Mod. 11.27 N.T. Ed.2-94.pdf

  4. #4
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    Provo a chiedere qualcosa di diverso.
    Si possono prendere tutti i nomi corti (compresi le sottocartelle), un po' come fa dir /x?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    No ... non esistono.

    Quelli che vedi sono dei ? visualizzati al posto delle lettere accentate ... esempio

    Responsabilità
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    In realtà si possono creare (NTFS non ha problemi a supportarli), ma solo per vie traverse; le API di gestione dei file non ammettono ? nei percorsi "normali", forse sono ammessi in quelli UNC, ma in generale non è mai una buona idea avere file del genere perché sono ingestibili praticamente per ogni software.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da MItaly
    In realtà si possono creare [...]
    Sì, preciso che la mia risposta era mirata al proverbiale "tagliare la testa al toro" perché sicuramente il problema nel caso in esame risiedeva altrove (come poi è emerso).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    Scusate, non esisteranno in teoria, però in pratica esistono, eccome.

    Detto questo non mi pare sia un problema di "à" per il semplice motivo che cercando di "vederli" con tale carattere aggiunto a mano non funziona.

    Poi che inizialmente avessero una "à" nel nome e solcazzo come siano arrivati su un hd col ? sono d'accordo, ma segnalo che, ad esempio, il copy di windows li "vede" benissimo.

    Ho ragionato un pochino e mi è venuto in mente che la soluzione sarebbe quella di avere il nome corto del file (8.3).

    Però guardando in "giro" (su msdn) ho trovato una findfirstfileex, ma ci ho capito poco, sia perchè so male l'inglese, sia perchè non è che sia proprio un drago a programmare.

    Qui http://msdn.microsoft.com/en-us/libr...sktop/aa365247(v=vs.85).aspx il materiale che ho trovato, ma non ho capito benissimo (anzi per niente) se e come è possibile in delphi usare la funzione che ritorna il nome CORTO del file.

    Sto inoltre cercando di capire esattamente che minchia fa "\\?\"

    EDIT: e inoltre le funzioni unicode? Per caso è questo il motivo magico per cui Windows funziona benissimo con i ?

    HELP please!

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da lanciafiamme
    il copy di windows li "vede" benissimo.
    Il copy del dos vede i ? e i * come caratteri jolly ... è tutta un'altra storia.

    Se vedi nella FindFirstEx se ne parla proprio

    The directory or path, and the file name, which can include wildcard characters, for example, an asterisk (*) or a question mark (?).

    Comunque, una volta ottenuto il nome lungo, trovi quello corto con la API

    GetShortPathName
    http://msdn.microsoft.com/en-us/libr...sktop/aa364989(v=vs.85).aspx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    Originariamente inviato da oregon
    Il copy del dos vede i ? e i * come caratteri jolly ... è tutta un'altra storia.

    Se vedi nella FindFirstEx se ne parla proprio

    The directory or path, and the file name, which can include wildcard characters, for example, an asterisk (*) or a question mark (?).

    Comunque, una volta ottenuto il nome lungo, trovi quello corto con la API

    GetShortPathName
    http://msdn.microsoft.com/en-us/libr...sktop/aa364989(v=vs.85).aspx
    GIà provato, non funziona (o almeno non sono riuscito a farlo fare)

    ho usato il copia-incolla di un pezzo di codice trovato
    codice:
    function GetShortName(sLongName: string): string; 
    var 
       sShortName:    string;
       nShortNameLen: Integer; 
    begin 
       SetLength(sShortName, MAX_PATH); 
       nShortNameLen := GetShortPathName(PChar(sLongName), PChar(sShortName), MAX_PATH - 1);
       if (0 = nShortNameLen) then 
       begin 
         // handle errors... 
       end; 
       SetLength(sShortName, nShortNameLen); 
       Result := sShortName; 
    end

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.