| Autor |
Beitrag |
Niko S.
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: Sa 16.09.06 18:52
Nagut die Übershcireft ist nicht ganz so gut aber dann mal los:
Ich möchte nach einer bestimmten datei suchen, den ordner "öffnen" in der sich dei datei befindet, in einer listbox die ganzen dateien und ordner aufgelistet haben die in diesem ordner sind, dort die *.exe rausfischen
Wie stell ich das an? Also das mit dem suchen und in die listbox packen den rest krieg ich alleine hin
In der suche habe ich nix gefunden bin wohl mal wieder zu dumm um die suche richtig einzusetzen ..
PS: Behaltet die Rechtschreibfehler für euch!
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Sa 16.09.06 19:01
Dazu schaust du dir am besten mal FINDFIRST sowie FindNext/FindClose an. Damit suchst du dateien. um alle dateien in eine ListBox zu schreiben benutzt du eine Schleife mit FindNext und ListBox.Items.Add();
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Niko S. 
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: Sa 16.09.06 19:57
ouh ehm also soweit ich dat mit dem findfirst check ich noch nicht ganz
ich hab nach dem besipsiel gehandelt
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button1Click(Sender: TObject); var FindRec:TSearchRec; begin if FindFirst ('D:\' + '*.*'+#0, faAnyFile, FindRec) = 0 then repeat if (FindRec.Name <> '.') and (FindRec.Name <> '..') then ListBox1.Clear; ListBox1.items.Add(FindRec.Name); until FindNext (FindRec) <> 0; FindClose (FindRec); end; |
ne gut passt alles aber wie finde ich jetzt eine datei OHNE zu wissen WO die sich befindet x.x
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Sa 16.09.06 21:26
Simak hat folgendes geschrieben: | Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button1Click(Sender: TObject); var FindRec:TSearchRec; begin if FindFirst ('D:\' + '*.*'+#0, faAnyFile, FindRec) = 0 then repeat if (FindRec.Name <> '.') and (FindRec.Name <> '..') then ListBox1.Clear; ListBox1.items.Add(FindRec.Name); until FindNext (FindRec) <> 0; FindClose (FindRec); end; |
|
Die Markierte stelle macht etwa soviel wie dashier: x:=x+0. du fügst ein NIX ans ende, diese Abfrage liefert true zurück: if (x+#0) = x then showmessage('das is das selbe ~.~');
Ausserdem wird Listbox1.Clear; IMMER ausgeführt, wenn etwas gefunden wurde, was NICHT . oder .. heist! Das bedeutet, er schreibt . rein, dann nächste zeile .., dann löscht er alles und schreibt den nächsten eintrag rein, dann löscht er WIEDER alles und so weiter bis zum letzten eintrag. ausserdem würd ich schreiben:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| if FindFirst ('D:\*.*', faAnyFile, FindRec) = 0 then repeat if (FindRec.Name = '.') or (FindRec.Name = '..') then ListBox1.Clear else ListBox1.items.Add(FindRec.Name); until FindNext (FindRec) <> 0; FindClose (FindRec); |
Ausserdem kannst du statt *.* auch * schreiben, wenn du willst ^^
Folgender Code zeigt MIR alle Ordner und Dateien im Verzeichnis C:\Programme an:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| Procedure TForm1.Button1Click(Sender: TObject); Var FindRec: TSearchRec; Begin If FindFirst('C:\Programme\*', faAnyFile, FindRec) = 0 Then Begin Repeat If (FindRec.Name = '.') Or (FindRec.Name = '..') Then ListBox1.Clear Else ListBox1.items.Add(FindRec.Name); Until FindNext(FindRec) <> 0; End; FindClose(FindRec); End; |
Ich hoffe das half ^^
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Niko S. 
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: Sa 16.09.06 21:34
ja das prinzip hab ich jetzt verstadnen was ist jetzt aber nun mit dem, dass ich eine datei suche OHNe zu wissen in welchen unterordner die sich befindet ...
Also suchen in C und D z.b.
bzw den ordner raussuchen wo das prog selbst drinne ist und dann sucht der auf diesem laufwerk wo die andere datei sit falls vorhanden!
und dann listet er mir die auf (inna memo jketzt das klappt ganz gut )
Und ich kann dann die *.exe herausfiltern um somit zu prüfen ob die sachen laufen
...
wäre denn sowas möglich wenn ja wie?
*Also nocmal im klartext
Suche nach blabla.pl
in de rlistbox dann alle dateien die in dem selben ordner sind wie die zu suchende datei
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Sa 16.09.06 21:48
Oh je, da hast dir was eingebrockt
Du willst eine Datei auf einem Laufwerk suchen. Du kennst Dateiname und Laufwerkbuchstabe, sonst nix? Dann kommst du nicht drum rum, eine Rekursion zu benutzen.
Rekursion? Das bedeutet, eine Funktion, die sich selbst aufruft.
Du übergibst der Funktion erstmal D:\ und den Dateinamen. dann sucht die Funktion D:\ ab und hofft, die datei zu finden. Wenn nicht, wird in der Funktion eine Schleife aufgerufen, in der du deiner Funktion immer jeweils einen Ordner übergibst, der gerade gefunden wurde. Dadurch erhälst du eine ewig lange verschachtelung deiner Funktion und sie wird irgentwann einmal in jedem ordner gewesen sein, bis die Datei gefunden wurde. Das ganze is kompliziert und erfordert einiges an Gehirnverreckungen, aber ich bin sicher, du schaffst es  du könntest dir auf einem Blatt Papier eine Zeichnung, also eine Skizze anfertigen, die dir als Plan für die Funktion dient - denn selbst, wenn die Funktion vielleicht in 20 oder 30 Zeilen verfassbar ist, hilft dir eine Skizze bei den Verrenkungen weiter ^^
Viel Glück und Spaß...
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Niko S. 
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: Sa 16.09.06 21:54
genau daran habe ich auch grad gedacht als ich mir das alles nochmal angeguckt hab oh man ich hoff das klappt x_x'
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Sa 16.09.06 21:59
Hallo,
schon mal in die Delphi-Library geschaut, da findet sich bestimmt auch eine rekursive Variante.
Dateizugriff
z.B. der letzte Beitrag.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Niko S. 
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: Sa 16.09.06 22:23
COOL Genau das was ich gesucht habe
Danke
*ah da mus ich mich nid mit meinen 15 Jahren den kopfüber sowas zerbrechen*
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Sa 16.09.06 22:25
Ja, das freut uns.
Wir alle wollen ja nicht, dass du dir dabei einen Gehirnbruch hebst. Vielleicht würde dein Gehirn auch einfach in den Gaszustand sublimieren, wer weis das schon...
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Niko S. 
      
Beiträge: 566
Erhaltene Danke: 10
Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
|
Verfasst: Sa 16.09.06 22:51
[offtopic]
Ach wo ...
Ich würde das auch schon herausbekommen nur hab ich voll umständlich gedacht als wie das hier schön säuberlich dargestellt ist..
Liegt wohl daran, dass ich mir das programmieren selber beigebracht hab zumindest das was ich im moment kann.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: So 17.09.06 16:37
Simak hat folgendes geschrieben: | | [offtopic]Liegt wohl daran, dass ich mir das programmieren selber beigebracht hab zumindest das was ich im moment kann. |
Hab ich auch, ob ich mit 15 wusste, was Rekursion is, ist die andere Frage  aber gut  Dann is das Thema hier erledigt, bevor wir noch weiter ins OT geraten ^^
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|