Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Schleife (https://www.delphipraxis.net/87476-schleife.html)

-187- 1. Mär 2007 08:51


Schleife
 
Delphi-Quellcode:
begin
  for HDD:='C' to 'Z' do
  if SearchForFile(HDD + ':\', Filename, APathFound) then
  begin repeat
    DeleteFile(ApathFound+Filename);
    until SearchForFile(HDD + ':\', Filename, APathFound)=false;
    end;
  if SearchForFile(HDD + ':\', Filename, APathFound) then
    WriteLn(myFile, Filename + ' available on: ' + APathFound) else
    WriteLn(myFile, Filename + ' is not available');
    CloseFile(myFile);
    end;
Morgen, der Code löscht bestimmte Dateien, überprüft dann ob sie noch vorhanden sind und schreibt die dazugehörige Zeile. Mein Problem ist das er das nur bei der ersten Datei die Zeile schreibt weil das "SearchForFile" nicht ein eine Schleife eingebunden ist.

Ich hab es auch nich hinbekommen und brauche jetz eure Hilfe =) Danke

matashen 1. Mär 2007 08:55

Re: Schleife
 
ich hätte das so geschrieben,

hast dus so schon ausprobiert ?



Delphi-Quellcode:
begin
  for HDD:='C' to 'Z' do
  if SearchForFile(HDD + ':\', Filename, APathFound) then
  begin
       repeat
       DeleteFile(ApathFound+Filename);
       if SearchForFile(HDD + ':\', Filename, APathFound) then
          WriteLn(myFile, Filename + ' available on: ' + APathFound) else
          WriteLn(myFile, Filename + ' is not available');
       until SearchForFile(HDD + ':\', Filename, APathFound)=false;
    end;
  CloseFile(myFile);
end;

thkerkmann 1. Mär 2007 10:12

Re: Schleife
 
Hi,

wirklich besser ist das auch nicht :-)
Delphi-Quellcode:
begin
  for HDD:='C' to 'Z' do
    if SearchForFile(HDD + ':\', Filename, APathFound) then
    begin
       repeat
          DeleteFile(ApathFound+Filename);
       until not SearchForFile(HDD + ':\', Filename, APathFound);
    end
    else
       WriteLn(myFile, Filename + ' is not available on ', HDD);

  CloseFile(myFile);
end;
Gruss

-187- 1. Mär 2007 10:34

Re: Schleife
 
thkerkmann in deinem code hast du "is available" nich berücksichtigt, also mein code soll schon bestehen bleiben, nur umgeschrieben..


// funktioniet doch nicht,findet garkeine dateien mehr D:

-187- 1. Mär 2007 11:13

Re: Schleife
 
Das ist mein Code nun, die erste Datei wird prima auf allen Laufwerken aufgelistet, ob sie da is oder nicht.. Aber dann bleibt er wieder hängen, die Schleife ist noch nich ganz richtig was mach ich falsch ?! :/

Delphi-Quellcode:
  Procedure DeletingFiles(Filename:String);
begin
  for HDD:='C' to 'Z' do
    if SearchForFile(HDD + ':\', Filename, APathFound) then
    begin
       repeat
          DeleteFile(ApathFound+Filename);
          WriteLn(myFile, ':: '+ Filename + ' available on: ' + APathFound)
       until not SearchForFile(HDD + ':\', Filename, APathFound);
    end
    else
       WriteLn(myFile, Filename + ' is not available on ', HDD);
  CloseFile(myFile);
end;

thkerkmann 1. Mär 2007 12:16

Re: Schleife
 
Hi,

also dann musst du uns mal sagen, welchen Eingangswert denn "Filename" bei Dir hat.

Und woher kommt SearchForFile, kenn ich gar nicht.

Und was heist "bleibt hängen" ? Die Schleife läuft doch über alle Laufwerke und ist dann zu Ende.
Und du sagst die erste Datei zeigt er auch an auf allen Laufwerken.
Wie ruftst Du die Prozedur denn auf ? Auch wieder in einer Schleife über irgendwas ?

Gruss

-187- 1. Mär 2007 12:19

Re: Schleife
 
das sind meine prozeduren , ja hätt ich mit posten sollen. habs jetz gefixxt , das closefile musste raus weil er ja so nach der ersten file closed hat obwohl noch eine kam ..und neu geöffnet hat er es ja auch nich..naja problem behoben , danke

-187- 1. Mär 2007 12:24

Re: Schleife
 
Ein weiteres Problem besteht dadrin das ich den Exit nich hinkriege wenn eine File nicht vorhanden ist.

Delphi-Quellcode:
  Procedure DeletingFiles(Filename:String);
  begin
  for HDD:='C' to 'Z' do
    if SearchForFile(HDD + ':\', Filename, APathFound) then
    begin
       repeat
          DeleteFile(ApathFound+Filename);
          WriteLn(myFile, ':: '+ Filename + ' available on: ' + APathFound)
       until not SearchForFile(HDD + ':\', Filename, APathFound);
      end
    else
    WriteLn(myFile, Filename + ' is not available on ', HDD);
end;
Also sowas wie
else
WriteLn(myFile, Filename + ' is not available on ', HDD) + Exit;

Klaus01 1. Mär 2007 12:54

Re: Schleife
 
Delphi-Quellcode:
else
WriteLn(myFile, Filename + ' is not available on ', HDD) + Exit;
Warum willst Du denn hier die Schleife verlassen.
Wenn Du da die for Schleife mit break verlaesst
kannst Du nicht sicher sein das alle Laufwerke durchsucht wurden.

Gruesse
Klaus

-187- 1. Mär 2007 13:01

Re: Schleife
 
Naja klar , ich will nich die Schleife verlassen sondern was ich will ist:
Wenn eine Datei nicht vorhanden ist soll mein Programm die Zeile "not available" schreiben und sich danach schließen. Wenn aber alles vorhanden ist dann solls ganz normal weiter gehen ..


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf