Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    37

    [DELPHI] Ritrovamento e copia di un file

    ciao a tutti
    ho un piccolo problemino:

    con questa procedura popolo una combo con tutte le sottocartelle di una certa cartella e fin qui tutto a posto

    codice:
     
    procedure TWinForm1.popolaCombo();
    var
      Search : TSearchRec;
    begin
      FindFirst('c:\cartella\*.*', faDirectory, search );
      while FindNext(Search) = 0 do
      begin
        ComboBox1.Items.Add(Search.Name);
      end;
      FindClose(Search);
    end;
    successivamente devo copiare dei file da un cartella ad un altra e utilizzo la seguente funzione:

    codice:
     
    CopyFile('c:\cartella\file1.txt, 'c:\cartella2\file2.txt', true);
    per utilizzare questa funzione ovviamente devo includere la clausola 'uses Windows' all'inizio. il problema è questo: se aggiungo appunto 'uses windows' mi crea il seguente errore: Incompatible types: 'Integer' and 'TsearchRec' nella riga dove avviene 'FindClose(Search)'.
    Se tolgo 'uses Windows', 'FindClose' compila correttamente ma ovviamente mi crea un errore su 'CopyFile'.
    Qualche soluzione?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    37
    guardando l'help il problema presumo sia per il fatto che esistono 2 funzioni findClose:

    Namespace
    Borland.Vcl.Windows
    Syntax
    function FindClose(hFindFile: Integer): LongBool;


    Namespace
    Borland.Vcl.SysUtils
    Syntax
    procedure FindClose(var F: TSearchRec);


    hFindFile: Integer cosa sarebbe???
    se io volessi usare la seconda non dovrebbe esserci overload???

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    37
    scusate, che mona, ho già risolto...

    se a qualcuno può interessare dovevo passare a FindClose l'handle del search ovvero FindClose(Search.FindHandle);

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Io invece sospetto che vi sia una funzione Search, che magari restituisce un intero, e che il compilatore tenti di utilizzare tale funzione al posto della tua variabile, anche se le regole dello "scope" non dovrebbero consentirlo.

    Prova ad usare un nome differente per la variabile se ti capita qualcosa di simile di nuovo.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    perchè non fai


    SysUtils.FindClose(Search);


    Così sistemi il problema di omonimia delle due funzioni.

    Ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    37
    non ci avevo pensato...
    con SysUtils.FindClose(Search); funziona
    grazie mille

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 © 2025 vBulletin Solutions, Inc. All rights reserved.