Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1

    [delphi] File di una directory

    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?

    Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    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...

  3. #3
    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?

    Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    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...

  5. #5
    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!
    Il percorso si trova nella variabile path...
    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.

    Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da DonFabio
    Il percorso si trova nella variabile path...
    In tal caso, va accodato al nome del file da inviare tramite FTP.

    Originariamente inviato da DonFabio
    Come faccio a verificare il ritorno di FindFirst?
    Con un'istruzione if, ovviamente.

    Originariamente inviato da DonFabio
    Ho provato ad aggiungere path+ nell'istruzione put di tidftp, ma nulla, da sempre errore. Non capisco cose sbaglio.
    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...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #7
    Mi dice Cannot open file da EFOpenError...
    Eppure sembra giusto.

    Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da DonFabio
    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.

    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...

  9. #9
    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...

    Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;

  10. #10
    Funziona

    Nel path dovevo indicare anche la wildcard *.*

    Τί ουν ποιήσε ϕιλοσοϕίας πέρι; πή τρέψή άγνοουμένων τούτων;

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.