AGB  ·  Datenschutz  ·  Impressum  







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

Programm störung

Ein Thema von milanlu · begonnen am 30. Dez 2005 · letzter Beitrag vom 30. Dez 2005
Antwort Antwort
Seite 1 von 2  1 2      
milanlu

Registriert seit: 16. Nov 2005
51 Beiträge
 
Delphi 2005 Personal
 
#1

Programm störung

  Alt 30. Dez 2005, 20:28
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
Milan
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: Programm störung

  Alt 30. Dez 2005, 20:31
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
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Programm störung

  Alt 30. Dez 2005, 20:33
Lagere die Routine mit der Schleife zum Umbenennen in einen Thread aus.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Programm störung

  Alt 30. Dez 2005, 20:35
Zitat von milanlu:
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.
Wieso nicht? Du wirst vermutlich evtl. noch einen Virenscanner haben der die umbenannten Dateien neu durchscannt. Außerdem wirst Du der GUI mittels Application.ProcessMessage keine Rechenzeit zum neuzeichnen geben, so daß auch dein Fenster nicht gezogen werden kann.

Zitat von fkerber:
Und wie sollen wir helfen? Durch Raten?
{Bitte hier Spruch mit der Glaskugel in Reparatur einsetzen}
Ist gerade aus der Reparatur zurückgekommen. Mal schauen ob sie wieder funktioniert
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
milanlu

Registriert seit: 16. Nov 2005
51 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Programm störung

  Alt 30. Dez 2005, 20:36
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;
Milan
  Mit Zitat antworten Zitat
milanlu

Registriert seit: 16. Nov 2005
51 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Programm störung

  Alt 30. Dez 2005, 20:40
das programm braucht so zu sagen eine pause zwichen zwei dateien. aber wie???
Milan
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#7

Re: Programm störung

  Alt 30. Dez 2005, 20:43
Hi!

Also eine Pause zum Neuzeichnen?
Dann verwende Application.Processmessages.

Sinnvoller wäre ein Thread - siehe Luckies Posting.


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#8

Re: Programm störung

  Alt 30. Dez 2005, 20:43
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.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
milanlu

Registriert seit: 16. Nov 2005
51 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Programm störung

  Alt 30. Dez 2005, 20:45
ich würde euch sehr dankbar sein wenn ihr mir das mahl erklären würdet. Application.ProcessMessages und Thread.
DANKE
Milan
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#10

Re: Programm störung

  Alt 30. Dez 2005, 20:47
Hi!

Such mal hier im Forum und zu Threads gibts ein Tutorial auf Luckies HP.


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:55 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