Autor |
Beitrag |
Lsm09
      
Beiträge: 38
Win XP, Win 7, Win 8
Turbo Delphi, Delphi 5, Lazarus
|
Verfasst: So 28.11.10 18:05
Hallo,
ich habe folgendes Problem:
Ich schreibe gerade ein Programm, das erst guckt, was in einem Ordner ist und dann soll es die Dateien in einen anderen Ordner verschieben.
ABER:
Ich muss immer jede Datei einzelnt auswählen die dann verschieben und dann das mit der nächsten machen usw...
Wäre schön, wenn jemand mir helfen könnte!!
Lsm09
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 28.11.10 18:45
Was hat denn die visuelle Darstellung (ListBox) mit den Daten (deiner Dateiliste) und den Aktionen damit zu tun?
Du hast die Dateiliste vermutlich in einer TStringList? Dann kannst du eine Schleife nehmen und für jede Datei eine Aktion durchführen.
Alternativ kannst du mit SHFileOperation auch einfach alle Dateien oder den Ordner insgesamt verschieben.
|
|
Lsm09 
      
Beiträge: 38
Win XP, Win 7, Win 8
Turbo Delphi, Delphi 5, Lazarus
|
Verfasst: So 28.11.10 18:52
ich weiß nicht wie das geht...
Bin noch Anfänger...
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 28.11.10 18:54
Hier findest du etwas zu Schleifen:
www.delphi-treff.de/...ct-pascal/schleifen/
Und einen sehr guten Crashkurs findest du hier:
crashkurs.christian-stelzmann.de
und die neue Version speziell ab Turbo Delphi:
www.christian-stelzm...shkurs_reloaded.html
Ein weiteres Online-Buch:
de.wikibooks.org/wik...grammierkurs:_Delphi
Und wenn du konkret eine Frage stellen würdest, was du nicht verstehst an Schleifen oder so und was du versucht hast, könnte auch jemand etwas dazu sagen...
|
|
Lsm09 
      
Beiträge: 38
Win XP, Win 7, Win 8
Turbo Delphi, Delphi 5, Lazarus
|
Verfasst: Di 18.01.11 18:42
Wie führe ich einen Befehl für jeden eintrag mit zeitversögerung aus?
|
|
HenryHux
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: Di 18.01.11 19:26
Das kannst du mit einem Timer machen.
Dazu fügst du die Timer Komponente in dein Formular ein.
Die Länge die er warten soll in ms wird so eingestellt:
Delphi-Quelltext 1:
| Timer1.Interval := 1000 |
Und so startest du ihn:
Delphi-Quelltext 1:
| Timer1.enabled := true |
Lg
|
|
Lsm09 
      
Beiträge: 38
Win XP, Win 7, Win 8
Turbo Delphi, Delphi 5, Lazarus
|
Verfasst: Di 18.01.11 19:29
Also, den Timer-Befehl kenne ich auch. Ich dachte an folgenden Timer:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| Var zeit:double; begin Zeit:=now+1.0*(1.0/86400.0); while (now<=Zeit) do Application.processMessages; end; |
Aber mein größtes Problem liegt darin, einen Befehl für jeden eintrag einer Listbox auszuführen.
|
|
HenryHux
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: Di 18.01.11 19:40
Naja deshalb sind ja Schleifen dafür wichtig.
Hier mal anhand der For-Schleife
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm2.btn1Click(Sender: TObject); var i : integer; begin if lst1.items.count>0 then For i := 0 to lst1.items.count do begin ShowMessage(lst1.items[i]); end; end; |
Diese bewirkt, dass dir jede Zeile einer Listbox mit dem Namen lst1 mit einer Showmessage angezeigt wird.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 18.01.11 19:40
|
|
Lsm09 
      
Beiträge: 38
Win XP, Win 7, Win 8
Turbo Delphi, Delphi 5, Lazarus
|
Verfasst: Di 18.01.11 22:24
Hallo, es hat mir geholfen, doch ganz funktioniert es nicht.
Mein Code sieht so aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Timer2Timer(Sender: TObject); begin
if Listbox1.Items.Count >= 0 then begin
ClientSocket1.Socket.SendText(Listbox1.Items[FCurrentIndex]); Inc(FCurrentIndex); end; end; |
Aber es kommt die fehlermeldung
'Der Index der Liste überschreitet ds Maximum(0)!'
Zuletzt bearbeitet von Lsm09 am Di 18.01.11 22:41, insgesamt 1-mal bearbeitet
|
|
Lsm09 
      
Beiträge: 38
Win XP, Win 7, Win 8
Turbo Delphi, Delphi 5, Lazarus
|
Verfasst: Di 18.01.11 22:26
|
|
HenryHux
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: Di 18.01.11 22:39
Lsm09 hat folgendes geschrieben : | Hallo, es hat mir geholfen, doch ganz funktioniert es nicht.
Mein Code sieht so aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Timer2Timer(Sender: TObject); begin
if Listbox1.Items.Count >= 0 then begin
ClientSocket1.Socket.SendText(Listbox1.Items[FCurrentIndex]); Inc(FCurrentIndex); end; end; |
Aber es kommt die fehlermeldung
'Der Index der Liste überschreitet ds Maximum(0)!'
Was mache ich falsch?? |
Das mit der Fehlermeldung liegt daran, dass deine Listbox noch kein 0tes Element hat. Listbox1.Items.Count >= 0 Mache hier das >= zu > .
Ansonsten hast du da garkeine Schleife drin, dass heißt es wird nur einmal ausgeführt, ich weiß jetzt nicht ob das Absicht ist.
Zusätzlich musst du drauf achten, die Variable FCurrentIndex am Programmstart auf 0 zu setzen, da das sonst auch eine Fehlerquelle sein kann.
Lg
|
|
Lsm09 
      
Beiträge: 38
Win XP, Win 7, Win 8
Turbo Delphi, Delphi 5, Lazarus
|
Verfasst: Di 18.01.11 22:46
das ich keine Scleife hbe, liegt dran das es nen Timer gibt.
|
|
Lsm09 
      
Beiträge: 38
Win XP, Win 7, Win 8
Turbo Delphi, Delphi 5, Lazarus
|
Verfasst: Sa 26.02.11 21:42
ich habe jetzt eine Funktionierende lösung gefunden!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var i : integer; begin if lst1.items.count>0 then For i := 0 to lst1.items.count +1 do begin ShowMessage(lst1.items[i]); end; end; |
|
|
HenryHux
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: Sa 26.02.11 21:55
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 26.02.11 23:31
Ich schmeiße noch mal ein -1 in die Runde. 
|
|
Lsm09 
      
Beiträge: 38
Win XP, Win 7, Win 8
Turbo Delphi, Delphi 5, Lazarus
|
Verfasst: Do 10.01.13 16:30
Boa, ich les da grad, was ich vor nem Jahr an Sachen poduziert habe...
Mittlerweile mach ich sowas innerhalb von 5 sek und ohne google...
|
|