AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Paralleler Thread funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Paralleler Thread funktioniert nicht

Ein Thema von DelphiUser123 · begonnen am 1. Okt 2024 · letzter Beitrag vom 2. Okt 2024
 
DelphiUser123

Registriert seit: 23. Feb 2013
44 Beiträge
 
#1

Paralleler Thread funktioniert nicht

  Alt 1. Okt 2024, 13:57
Hallo liebes Forum. Einen Code den ich schon einmal vor kurzem hier gepostet habe, habe ich übertragen von einer Timer Procedure in eine Thread Procedure. Ist der USB Stick mit der Datei KEYxyz.txt vorhanden, bleibt das Programm wunschgemäß geöffnet und führt ein mal Laden() aus. Steckt man den USB Stick aus, soll das Programm sofort schließen. Hier liegt das Problem: Anstelle zu schließen, erscheint ein flackernder Bildschirm, man sieht an den Driver und File Komponenten, dass die Laufwerkskontrolle kontinuierlich fortgesetzt wird. Er kommt nicht rein in den "Showmesage('JA')" Bereich.

Ich gebe zu, die Art und Weise der Programmierung ist wahrscheinlich etwas "Oldschool", es soll in erster Linie funktionieren, dass das Programm ohne Vorwarnung schließt ist absichtlich so gewollt. Ich bitte um eine Fokussierung auf mein Problem und bitte keine Wiederholungen von den Posts von vor Kurzem. Vielen Dank für Antworten.

Delphi-Quellcode:
procedure TMyThread.Execute;
var j,i:integer; LookFor: string; f: File; pausieren: boolean;
begin
while not(closing) do begin

     Sleep(1000);
     
try //T
         pausieren:=false;
         j:=0;
   
    while ((j < (Form29.DriveCombobox1.GetCount)) and (not(pausieren))) do
    
    begin //B

      Form29.DriveCombobox1.itemindex:=j;

      Form29.FileListBox1.Directory:=Form29.DriveCombobox1.text[1] + ':/';

      LookFor:='KEYxyz.txt';

      Form29.FileListBox1.Update;

     i:=0;
                                            
    while ((i < (Form29.FileListBox1.Count)) and (not(pausieren))) do
   
    begin //A

      if (Form29.FileListBox1.Items[i]= LookFor) then begin //Showmessage('gefunden');

            FileNom:= Form29.FileListBox1.Directory + LookFor;

                        if timerstarter then begin

                          Laden();
                          timerstarter:=false;
                        end;
                            
                            pausieren:=true;
                                Showmessage('in pausieren drin');

      end;
      Inc(i);

    end; //A
 
       if ((j=Form29.DriveCombobox1.GetCount-1) and (not(pausieren))) then begin Showmessage('JA'); closing:=true; Application.Terminate; end;
 
       Inc(j);

    end; //B
    except //T
     on EInOutError do begin
//showmessage('Fehler mit dem Datenträger!');
     Application.Terminate;
    end;
end;
end;
end;
  Mit Zitat antworten Zitat
 


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 07:35 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-2025 by Thomas Breitkreuz