![]() |
Programm störung
Hallo,
ich arbeite an einem Datei umbenennungs programm das programm lauft perfekt auser das beim umbenennen von mehr als 100 dateien sich nur noch der ProgressBar bewegt alles andere ist so zu sagen inactiv. man kann das fenster nicht bewegen, und es verbraucht 70 % von einem 3.2 GHz Prozessor mit HT. das kann nicht sein. Ich bitte um hilfe. Danke im Voraus |
Re: Programm störung
Hi!
Und wie sollen wir helfen? Durch Raten? {Bitte hier Spruch mit der Glaskugel in Reparatur einsetzen} Du musst uns schon Code geben, falls er fehlerhaft ist (wovon ich dann mal ausgehe) "Erholt" sich das Programm irgendwann wieder oder bleibt es so? Ciao Frederic |
Re: Programm störung
Lagere die Routine mit der Schleife zum Umbenennen in einen Thread aus.
|
Re: Programm störung
Zitat:
Zitat:
|
Re: Programm störung
hallo, es funktioniert wider gur wenn die funktion fertig ist.
Delphi-Quellcode:
var
frmverschieben: Tfrmverschieben; lista: TListBox; eingabe, ausgabe: String; implementation uses Unit1, Unit2; {$R *.dfm} function proveri_pesmu(pesma: String): Boolean; var achars: set of char; i, s, k, k1, anzahl: Integer; begin achars := ['1','2','3','4','5','6','7','8','9','0','+','"','*','&','/','(',')','=','?','[',']','!','<','>','\','_']; anzahl := 0; Result := True; k := Length(pesma); k1 := k - 3; for s := 1 to k1 do begin if pesma[s] = '-' then begin anzahl := anzahl + 1; end; end; if anzahl <> 1 then begin Result := False; exit; end; for i := 1 to k1 do begin if ((pesma[i] in achars) or (pesma[1] = ' ')) then begin Result := False; exit; end else if ((pesma[i] = '-') and ((pesma[i-1] <> ' ') or (pesma[i+1] <> ' '))) then begin Result := False; exit; end; end; end; procedure Tfrmverschieben.Button1Click(Sender: TObject); var pesma, pesma1, pesma2, pesma3, s, ordners, s1, fehler: String; i, k: Integer; begin if frmverschieben.Showing then begin if ((eingabe <> '') and (lista.Items.Count > 0) and (ausgabe <> '')) then begin prozess.Max := lista.items.Count; for i := 0 to lista.Items.Count-1 do begin pesma := lista.Items[i]; ordners := ExtractFileDir(pesma); pesma1 := ExtractFileName(pesma); pesma3 := pesma1; if (proveri_pesmu(pesma1) = true) then begin pesma2 := LowerCase(pesma1); for k := 0 to Length(pesma2) do begin If ((k = 1) or (pesma2[k-1] = ' ')) then begin pesma2[k] := UpCase(pesma2[k]); end else begin pesma2[k] := pesma2[k]; end; end; if (ordners[Length(ordners)] = '\') then begin s := ''; end else begin s := '\'; end; if (ausgabe[Length(ausgabe)] = '\') then begin s1 := ''; end else begin s1 := '\'; end; RenameFile(ordners + s + pesma3, ausgabe + s1 + pesma2); end else begin if (ordners[Length(ordners)] = '\') then begin s := ''; end else begin s := '\'; end; if (ausgabe[Length(ausgabe)] = '\') then begin s1 := ''; end else begin s1 := '\'; end; fehler := ausgabe + s1 + 'FEHLER\'; ForceDirectories(fehler); RenameFile(ordners + s + pesma3, fehler + pesma3); end; pesma := ''; pesma1 := ''; pesma2 := ''; prozess.Position := i; if i = lista.Items.Count-1 then begin Timer1.Destroy; frmverschieben.Close; if (MessageDlg('Alle Dateien sind kopiert!', mtInformation, [mbOK], 0) = mrOK) then begin prozess.Position := prozess.Min; end; end; end; end else begin MessageDlg('Es sind keine Dateien zum Verschieben Vorhanden!', mtInformation, [mbOk], 0); end; end; end; |
Re: Programm störung
das programm braucht so zu sagen eine pause zwichen zwei dateien. aber wie???
|
Re: Programm störung
Hi!
Also eine Pause zum Neuzeichnen? Dann verwende Application.Processmessages. Sinnvoller wäre ein Thread - siehe Luckies Posting. Ciao Frederic |
Re: Programm störung
Application.ProcessMessages könnte dir helfen. Allerdings muss man damit vorsichtig sein, und alle Button/Felder, in denen Aktionen ausgeführt werden, vorher deaktivieren und nach der Verarbeitung wieder aktivieren. Sonst kann der Benutzer immer wieder auf den Button 'Starten' klicken, auch wenn die Verarbeitung noch garnicht abgeschlossen ist.
|
Re: Programm störung
ich würde euch sehr dankbar sein wenn ihr mir das mahl erklären würdet. :wiejetzt: Application.ProcessMessages und Thread.
DANKE |
Re: Programm störung
Hi!
Such mal hier im Forum und zu Threads gibts ein Tutorial auf Luckies HP. Ciao Frederic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz