Ciao a tutti,
ho bisogno di un ciclo che mi legga i nomi dei file in una determinata directory e li metta nel nome di una variabile, nello schema come segue:
ciclo
leggi nome file
setta nome variabile
//fai qualcosina
loop
Come faccio?
Ciao a tutti,
ho bisogno di un ciclo che mi legga i nomi dei file in una determinata directory e li metta nel nome di una variabile, nello schema come segue:
ciclo
leggi nome file
setta nome variabile
//fai qualcosina
loop
Come faccio?
Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;
Cerca sulla Guida in linea di Delphi gli argomenti relativi alle funzioni FindFirst, FindNext e FindClose: vi sono tutte le informazioni per utilizzare tali funzioni, nonchè alcuni esempi di codice.
Ciao!
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
pare che funzioni, invece no
//si connette al server ftp
idftp1.Connect();
//se è connesso scrive fabio e disabilita button
if idftp1.Connected=True then
begin
path:='c:\fabio\';
button1.Caption := 'Connesso';
button1.Enabled := false;
button2.Visible := true;
//prepara tutto per l'ftp
idftp1.TransferType:=ftascii;
idftp1.ChangeDir('upload');
//scarica e cancella il file
FileAttrs := 0;
repeat
begin
findfirst(path, FileAttrs, sr);
idftp1.Put(sr.name, sr.name, false);
deletefile(path+sr.Name);
end;
until FindNext(sr) <> 0;
FindClose(sr);
non fa ne upload ne cancella il file...perché?
Dopo due anni che non tocco delphi mi pare di ricominciare daccapo.
Cosa sbaglio?
Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;
Anche per la funzione FindFirst è necessario verificare il valore di ritorno poichè potrebbe fallire. Inoltre, se non ricordo male, è necessario specificare una maschera di ricerca per i file, oltre al percorso (ad esempio, "C:\MiaDir\*.*").
Basta posizionare un breakpoint sulla chiamata al metodo Put del componente TIdFTP per verificare, infine, che venga specificato il percorso completo del file e non solo il nome. Nella tua implementazione, a seconda dei casi, la chiamata fallisce comunque poichè per il file locale è necessario specificare l'intero percorso, mentre per il file remoto è necessario solamente il nome del file (o comunque il percorso relativo, che è senz'altro diverso dal percorso del file sul tuo PC).
Ciao!
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Il percorso si trova nella variabile path...Originariamente inviato da alka
Anche per la funzione FindFirst è necessario verificare il valore di ritorno poichè potrebbe fallire. Inoltre, se non ricordo male, è necessario specificare una maschera di ricerca per i file, oltre al percorso (ad esempio, "C:\MiaDir\*.*").
Basta posizionare un breakpoint sulla chiamata al metodo Put del componente TIdFTP per verificare, infine, che venga specificato il percorso completo del file e non solo il nome. Nella tua implementazione, a seconda dei casi, la chiamata fallisce comunque poichè per il file locale è necessario specificare l'intero percorso, mentre per il file remoto è necessario solamente il nome del file (o comunque il percorso relativo, che è senz'altro diverso dal percorso del file sul tuo PC).
Ciao!
Come faccio a verificare il ritorno di FindFirst?
Ho provato ad aggiungere path+ nell'istruzione put di tidftp, ma nulla, da sempre errore. Non capisco cose sbaglio.
In pratica questo programmino dovrebbe fare la scansione di una dir: quando trova file fa l'upload ftp, poi cancella i file caricati.
Intanto qui non va.
Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;
In tal caso, va accodato al nome del file da inviare tramite FTP.Originariamente inviato da DonFabio
Il percorso si trova nella variabile path...
Con un'istruzione if, ovviamente.Originariamente inviato da DonFabio
Come faccio a verificare il ritorno di FindFirst?
Non è sufficiente dire che "dà errore", poichè questo è ovvio: se tutto funzionasse correttamente, non avresti aperto questa discussione. Specifica l'errore che ottieni, altrimenti è necessario provare materialmente il tuo codice per ottenere lo stesso effetto...forse...Originariamente inviato da DonFabio
Ho provato ad aggiungere path+ nell'istruzione put di tidftp, ma nulla, da sempre errore. Non capisco cose sbaglio.
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Mi dice Cannot open file da EFOpenError...
Eppure sembra giusto.
Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;
Usa gli strumenti di debugging che Delphi mette a disposizione per verificare quali sono i parametri che passi al metodo Put che esegue l'upload del file.Originariamente inviato da DonFabio
Mi dice Cannot open file da EFOpenError...
Eppure sembra giusto.
Poni un breakpoint sulla chiamata a Put e, attraverso la finestra "Evaluate", ispeziona i valori dei parametri e verifica che il percorso, i separatori del percorso, il nome del file e così via siano validi (poichè probabilmente, dato l'errore, non lo sono).
Ciao!
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Comunque ho provato a stampare sr.name nella caption di un button, mi da vuoto...ergo sum, il problema è la scansione della dir...
Ed è proprio quello che non so fare...
Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;
Funziona
Nel path dovevo indicare anche la wildcard *.*
Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;