AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi unendliche Schleife Blockiert restliches Programm
Thema durchsuchen
Ansicht
Themen-Optionen

unendliche Schleife Blockiert restliches Programm

Ein Thema von srx · begonnen am 28. Aug 2007 · letzter Beitrag vom 28. Aug 2007
Thema geschlossen
Seite 1 von 2  1 2      
srx

Registriert seit: 27. Aug 2007
13 Beiträge
 
Delphi 2007 Enterprise
 
#1

unendliche Schleife Blockiert restliches Programm

  Alt 28. Aug 2007, 16:38
HI,
Ich habe in meinem Programm eine Schleife reingebaut, die sich selbst unendlich wiederholt.
Allerdings ist das Problem, dass es dafür das restliche Programm ständig blockiert.

Code:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var I: Integer;
begin

        //Memo1.Clear;
        //Edit1.Clear;
        //Memo1.Enabled:= false;
        //Edit1.MaxLength:= 20;
        //Edit2.MaxLength:= 2;
        //Edit3.MaxLength:= 11;
        //Edit3.Clear;

        //change Style/hide Window
        //SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE)
        // or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
        //ShowWindow(Handle, SW_HIDE);
        //ShowWindow(Application.Handle, SW_HIDE);

        I:= 0;
        repeat
        begin
            //**Geheimer Befehl**;
            I:= 0;
        end;
        until I=2;

end;
so,
da das ganze im Form.Create steht öffnet sich das Programm nichtmal ..

Wisst ihr, wie man eine Schleife so laufen lässt, dass sie den Rest nicht blockiert ?
 
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: unendliche Schleife Blockiert restliches Programm

  Alt 28. Aug 2007, 16:40
Am besten in einem Thread. Was willst du tun?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
 
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: unendliche Schleife Blockiert restliches Programm

  Alt 28. Aug 2007, 16:41
Sie in einem Thread ablaufen lassen?
Christian
 
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#4

Re: unendliche Schleife Blockiert restliches Programm

  Alt 28. Aug 2007, 16:46
Eine Endlosschleife kann man aber einfacher machen (ohne Variable):
Delphi-Quellcode:
while true
begin
...
end;
Das Programm hängt, weil es immer in der Schleife ist und den restlichen Code deshalb nicht ausführen kann. Der Code wird Zeile für Zeile durchlaufen, nicht alles auf einmal ausgeführt. Also wenn die Zeilen in der Schleife immer wieder neu durchlaufen werden...

Du kannst aber einen Thread machen, in dem nur die Schleife ist. Dann wird diese unabhängig vom restlichen Code ausgeführt.
 
srx

Registriert seit: 27. Aug 2007
13 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: unendliche Schleife Blockiert restliches Programm

  Alt 28. Aug 2007, 17:11
Zitat von Torpedo:
Eine Endlosschleife kann man aber einfacher machen (ohne Variable):
Delphi-Quellcode:
while true
begin
...
end;
Das Programm hängt, weil es immer in der Schleife ist und den restlichen Code deshalb nicht ausführen kann. Der Code wird Zeile für Zeile durchlaufen, nicht alles auf einmal ausgeführt. Also wenn die Zeilen in der Schleife immer wieder neu durchlaufen werden...

Du kannst aber einen Thread machen, in dem nur die Schleife ist. Dann wird diese unabhängig vom restlichen Code ausgeführt.
Wie mache ich den Thread ?

Ich versuche nämlich, dass unendlich versucht wird eine Sache zu blockieren.
 
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: unendliche Schleife Blockiert restliches Programm

  Alt 28. Aug 2007, 17:18
Dazu gibts einige dutzend Themen hier.

Kurz die einfache Variante:
Füge "über Datei--> neu" ein Thread-Objekt ein! Schreibe deine Schleife in die execute Methode und instanziere dann irgendwo diese Klasse.


Edit
Zitat:
Ich versuche nämlich, dass unendlich versucht wird eine Sache zu blockieren.
Vielleicht solltest du uns das Konzept der Sache noch verraten. Ich glaube dein Lösungsansatz ist verkehrt.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
 
srx

Registriert seit: 27. Aug 2007
13 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: unendliche Schleife Blockiert restliches Programm

  Alt 28. Aug 2007, 19:01
Zitat von sirius:
Dazu gibts einige dutzend Themen hier.

Kurz die einfache Variante:
Füge "über Datei--> neu" ein Thread-Objekt ein! Schreibe deine Schleife in die execute Methode und instanziere dann irgendwo diese Klasse.


Edit
Zitat:
Ich versuche nämlich, dass unendlich versucht wird eine Sache zu blockieren.
Vielleicht solltest du uns das Konzept der Sache noch verraten. Ich glaube dein Lösungsansatz ist verkehrt.

Ok ok,

die ganze wahrheit ist, dass ich versuche einen task die ganze zeit zu blockieren.

Delphi-Quellcode:
function KillTask(const AExeName: string): boolean;
var
  p: TProcessEntry32;
  h: THandle;
begin
  Result := false;
  p.dwSize := SizeOf(p);
  h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
  try
    if Process32First(h, p) then
      repeat
        if AnsiLowerCase(p.szExeFile) = AnsiLowerCase(AExeName) then
          Result := TerminateProcess(OpenProcess(Process_Terminate,
                                                 false,
                                                 p.th32ProcessID),
                                     0);
      until (not Process32Next(h, p)) or Result;
  finally
    CloseHandle(h);
  end;
end;
das ist die function KillTask, damit wird einfache in Prozess beendet

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin

        Memo1.Clear;
        Edit1.Clear;
        Memo1.Enabled:= false;
        Edit1.MaxLength:= 20;
        Edit2.MaxLength:= 2;
        Edit3.MaxLength:= 11;
        Edit3.Clear;

        //change Style/hide Window
        SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE)
              or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
        ShowWindow(Handle, SW_HIDE);
        ShowWindow(Application.Handle, SW_HIDE);

        while true do
            begin
                KillTask('taskmgr.exe');
            end;

end;
das ist jetzt mein form.create, damit der task nicht erst abgefragt werden muss, da ich ja nicht weiß, wann er gestartet wird/ist/war, soll er dauerhaft blockiert werden durch

Delphi-Quellcode:

        while true do
            begin
                KillTask('taskmgr.exe');
            end;



Könnt ihr mir jetzt helfen ?
 
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#8

Re: unendliche Schleife Blockiert restliches Programm

  Alt 28. Aug 2007, 19:12
Wenn du einen anderen Prozess blockiert hättest (Cheat-Programm oder so) dann wäre das was anderes. Aber so ist offensichtlich was du machen willst. Ich glaube nicht dass dir da jemand helfen kann. (oder will)
 
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#9

Re: unendliche Schleife Blockiert restliches Programm

  Alt 28. Aug 2007, 19:15
Sowas kann durchaus sinnvoll sein.
Brauchte ich z.B mal für ein Party Musik Player, der den ganzen Bildschirm abdeckt und man halt
auf nichts Zugriff haben soll ausser auf den Player. Is leider nie was draus geworden
Tipp: Timer! Auch bei 1000 als Interval, so schnell kann keiner klicken.
Chuck Norris has counted to infinity ... twice!
 
Benutzerbild von Luckie
Luckie

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

Re: unendliche Schleife Blockiert restliches Programm

  Alt 28. Aug 2007, 19:17
So was regelt man über die Benutzerrechte von Windows.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Thema geschlossen
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 17:53 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