AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit FindNext und FindClose

Ein Thema von manuel · begonnen am 2. Mär 2005 · letzter Beitrag vom 2. Mär 2005
Antwort Antwort
manuel

Registriert seit: 17. Sep 2003
Ort: MainBootRecord
72 Beiträge
 
Delphi 4 Client/Server
 
#1

Problem mit FindNext und FindClose

  Alt 2. Mär 2005, 15:26
Hi Leute,

in einem Thread-Objekt habe ich eine Funktion implementiert, die die Gesamtgrösse eines Verzeichnisbaumes und die Namen der darin enthaltenen Dateien in TStringlists einfügt.

Delphi-Quellcode:
filesize_total:Integer;
destinationdir: String;
FilesToCopy, DirectoriesToCreate:TStringlist;
SizeOfFiles:TStringlist;


function ThreadCopy.getDirectoriesFiles(startDirectory:string):longint;
//Bestimmt Verzeichnisse und Dateien
var SR : TSearchRec;
    Groesse : longint;
    Verzeichnis:String;
begin
  Verzeichnis:=startDirectory;
  Groesse:=0;
  DirectoriesToCreate.Add(Verzeichnis);
  if Verzeichnis[length(Verzeichnis)]<>'\then
    Verzeichnis:=Verzeichnis+'\';
  if FindFirst(Verzeichnis+'*.*',$3F,SR)=0 then begin
    repeat
      if ((SR.Attr and faDirectory)>0) and (SR.Name<>'.') and (SR.Name<>'..') then
      //Verzeichnis erkannt
      begin
        //Rekursiver Funktionsaufruf
        Groesse:=Groesse+getDirectoriesFiles(Verzeichnis+SR.Name);
        if (SR.Name<>'.') and (SR.Name<>'..') then
        begin
          if DirectoriesToCreate.IndexOf(Verzeichnis+SR.Name) = -1 then
          //Falls Eintrag in Liste noch nicht vorhanden, Eintrag hinzufügen
          DirectoriesToCreate.Add(Verzeichnis+SR.Name);
        end;
      end
      else
      begin
        //Datei erkannt
        SizeOfFiles.Add(IntToStr(SR.Size));
        Groesse:=Groesse+SR.Size;
        if (SR.Name<>'.') and (SR.Name<>'..') then
        begin
          //Falls Eintrag in Liste noch nicht vorhanden, Eintrag hinzufügen
          if FilesToCopy.IndexOf(Verzeichnis+SR.Name) = -1 then FilesToCopy.Add(Verzeichnis+SR.Name);
        end
      end;
    until FindNext(SR)<>0;
    FindClose(SR);
  end;
Bei der FindCLose(SR) in der vorletzen Zeile erhalte ich die Meldung
"Incompatible Types: Cardinal und TSearchRec".

Wo liegt der Fehler?

Baue ich genau den gleichen Quelltext in einen anderen Thread ein funktionierts problemlos

Hat vielleicht jemand eine Idee?


Gruß
Manuel
sometimes I feel diagonally parked in a parallel universe
  Mit Zitat antworten Zitat
s14

Registriert seit: 15. Mai 2003
Ort: München
251 Beiträge
 
Delphi 7 Architect
 
#2

Re: Problem mit FindNext und FindClose

  Alt 2. Mär 2005, 15:27
Versuch mal

SysUtils.FindClose(sr);
  Mit Zitat antworten Zitat
manuel

Registriert seit: 17. Sep 2003
Ort: MainBootRecord
72 Beiträge
 
Delphi 4 Client/Server
 
#3

Re: Problem mit FindNext und FindClose

  Alt 2. Mär 2005, 15:40
Jetzt bin ich platt...

die unit ist definitif eingebunden...
aber so gehts...

Danke...
sometimes I feel diagonally parked in a parallel universe
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: Problem mit FindNext und FindClose

  Alt 2. Mär 2005, 15:41
Hallo manuel,

du hast in deinem Thread eine FUnktion namens FindClose, welche die Funktion aus SysUtils "überschreibt". Dass die Unit eingebunden ist, ist klar. Mit dem "SysUtils." sagst du dem Compiler nur, dass er in der Unit SysUtils nachsehen soll, ob es dort eine entsprechende Funktion gibt, anstatt sich die Unit-Hierarchie hochzuarbeiten.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Problem mit FindNext und FindClose

  Alt 2. Mär 2005, 17:59
Moin Manuel,

Du könntest auch, als weitere Variante, die Reihenfolge der Windows und der SysUtils unter Uses vertauschen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz