Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: darione - Maggio 19, 2015, 11:21:32 pm

Titolo: FindFirst mi tronca i nomi dei files?
Inserito da: darione - Maggio 19, 2015, 11:21:32 pm
Sotto Linux sto vedendo una cosa strana che in windows non mi accade:

http://snag.gy/h6ILz.jpg

A sinistra c'è il codice che usa FindFirst per ottenere la lista dei files in una cartella.
Nel centro c'è lo showmessage del risultato ...
A destra una lista da prompt.

Come si vede bene, la mia funzione torna una lista mozzata ... davvero strano ... ho provato varie cose, ma non riesco ad ottenere una banale lista dei files ...

Qualcuno di voi ha per caso suggerimenti? grazie!
Darione
Titolo: Re:FindFirst mi tronca i nomi dei files?
Inserito da: darione - Maggio 19, 2015, 11:23:42 pm
Dimenticavo, il codice è un po' pasticciato solo perché cercavo di capire cosa accadesse di strano ... l'ultima prova è stata fare un .append su un TStringlist e tirare fuori il .text ... ma nulla cambia ... :-/
Darione
Titolo: Re:FindFirst mi tronca i nomi dei files?
Inserito da: bonmario - Maggio 20, 2015, 07:54:45 am
Credo che il problema sia che il messaggio che dovrebbe emettere è troèppo liungo, quindi viene tagliato.
Prova a scrivere i nomi dei files in una TMemo, sicuramente funzionerà.

Ciao, Mario
Titolo: Re:FindFirst mi tronca i nomi dei files?
Inserito da: nomorelogic - Maggio 20, 2015, 08:59:41 am
è veramente strano
ho notato che nella mask hai usato '*' che è corretto (*.* in linux non da quello che ci si aspetta)

prova a seguire il suggerimento di bonmario
in alternativa prova questo
http://wiki.freepascal.org/FindAllFiles (http://wiki.freepascal.org/FindAllFiles)

riduci il codice ad 1 riga ;)
Titolo: Re:FindFirst mi tronca i nomi dei files?
Inserito da: bonmario - Maggio 20, 2015, 09:07:58 am
ho notato che nella mask hai usato '*' che è corretto (*.* in linux non da quello che ci si aspetta)

Non me ne ero accorto ... se può essere utile, vorrei suggerire di usare GetAllFileMask.
Questa, in base al sistema operativo su cui viene usata, si preoccupa da sola di usare * oppure *.*, così eviti dui preoccupartene tu ogni volta !!!

Ciao, Mario
Titolo: Re:FindFirst mi tronca i nomi dei files?
Inserito da: darione - Maggio 20, 2015, 04:49:46 pm
GetAllFileMask ... ottima dritta bonmario, mai usato prima :-)

FindAllFiles e l'altra routine mia danno lo stesso problema.
Alla fine ho scoperto che è una questione - come maledettamente temevo - di conversione di stringa, ovvero aggiungendo un {$H+} all'inizio, sia nella mia unit dove chiamo la funzione mia, sia in quell'altra dove la funzione sta, allora ho la lista corretta:

----------
Unit trFileSystem;
{$mode objfpc} {$H+}
------------

Short string e ansi string ... mah ...
http://www.freepascal.org/docs-html/prog/progsu25.html

Putroppo queste menate sulle codifiche dei caratteri sono sempre una gran casino. Mi viene da cambiare una ben più nota citazione, e direi "La codifica dei caratteri è semplice? chi dice così ... si vede che non è ben informato".

Ma deriverà dal fatto che il codice l'ho fatto in windows e portato in linux ... beh farò altre prove, poi vi faccio sapere ...

Darione