Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi EINFACHSTES Delphi-Programm blockiert Betriebssystem (https://www.delphipraxis.net/105040-einfachstes-delphi-programm-blockiert-betriebssystem.html)

little-x 14. Dez 2007 14:23


EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Hi,

erstmal Entschuldigung für den reißerischen Titel..
Jawohl, ich wollte provozieren!

Spaß beiseite ich bin wirklich ratlos.
probiert mal folgendes... Neues Programm, 1 Button rein und dessen Klickevent folgenden Code zuweisen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
// Kreiert nix weiter als eine Schleife, die ca. 30 Sekunden läuft.
        var    i: integer;
                j:     integer;
begin
        i:= 0;
        j:= 0;
        while i<100000000 do
        begin
                j:=0;
                while j<300 do // bei langsamen Systemen eben ein bisschen weniger.
                begin
                        inc(j);
                end;
                inc(i);
        end;
        showmessage('fertig');
end;
Wenn ich auf Button1 klicke, reagiert mein Programm für die Zeit des Schleifendurchlaufs nicht. Das ist ok.
Wenn ich aber mal mein Programm während der Zeit, in der die Schleife durchläuft, links liegen lasse und in Windows z.B.
Start->...->Office->Excel anklicke, dann verzögert sich der Start von Excel immer über 15 sekunden, manchmal sogar so lange bis die Schleife komplett durchlaufen ist.

Andere Programme wie z.B. Firefox starten problemlos.
Es kann doch nicht sein dass in einem Multitasking-System solche banalen Algoritmen den Rest des Systems beeinträchtigen können?!

Außerdem - Während der Zeit des Schleifendurchlaufs ist immer noch ein Leerlaufprozess da mit 30% CPU-Ressourcen, außerdem DualCore... Also kanns auch nicht am ausgelasteten CPU liegen.

Außerdem II - Während ich die Schleife debugge, ist die Prozessorauslastung überhaupt nicht merklich beeinträchtigt und das Problem besteht dennoch.

Weiß jemand Rat? Oder soll ich zu VisualBasic zurückgehen :lol: Dort passiert das nämlich nicht :roll: Da gibt's DoEvents.

PS: Ein System.ProcessMessages hilft nicht, auch kein System.HandleMessage. Gibt's da noch mehr?

Die Muhkuh 14. Dez 2007 14:26

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Was ich mich zuerst einmal Frage: Wofür um alles in der Welt brauchst Du so eine Schleife?

Adler 14. Dez 2007 14:31

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Und bei Delphi gibt es Application.ProcessMessages ...

generic 14. Dez 2007 14:34

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Ich denke, er möchte nur drauf Hinweisen das der Taskscheduler von Windows für Vordergrundprogramme
optimiert ist.

Ich denke er hat ein Server Taskscheduler erwartet, wo die Zeitverteilung effektiver läuft.

sirius 14. Dez 2007 14:38

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Aber wer das ständig über DoEvents bzw. Application.ProcessMessages oder ähnliches regelt, sollte vielleicht besser bei Basic bleiben :mrgreen:

SirThornberry 14. Dez 2007 14:44

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Zitat:

Zitat von generic
Ich denke, er möchte nur drauf Hinweisen das der Taskscheduler von Windows für Vordergrundprogramme
optimiert ist.

Ich denke er hat ein Server Taskscheduler erwartet, wo die Zeitverteilung effektiver läuft.

Das kann durcheis sein. Allerdings spricht dagegen das man das ja umstellen kann wenn es einem nicht gefällt.

little-x 14. Dez 2007 16:18

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Jetzt mal halblang.
Nicht immer alles aufs Betriebssystem schieben.

Zu Euren Fragen.

Zitat:

Was ich mich zuerst einmal Frage: Wofür um alles in der Welt brauchst Du so eine Schleife?
Immer wieder selben Fragen. Aber gut: Um den Kern des Problems am einfachsten darstellen.

Zitat:

Ich denke er hat ein Server Taskscheduler erwartet, wo die Zeitverteilung effektiver läuft.
Gar nix erwarte ich. Der Taskscheduler ist ok so wie er ist. Es laufen ständig "aktive" programme, die aber nicht gleich den Start von Standardanwendungen blockieren!

Zitat:

Aber wer das ständig über DoEvents bzw. Application.ProcessMessages oder ähnliches regelt, sollte vielleicht besser bei Basic bleiben
So ein kluger Satz. Ja, ok, Du bist was besseres weil Du keine Ahnung von VB hast. Aber danke für die Hilfe. Ich bin zufrieden mit Delphi und werde deswegen sicher nicht zu VB schwenken. Aber deswegen muss man ja nicht alles toll finden. Und wer der Meinung ist, irgendein SW-Entwicklungswerkzeug wäre pauschal BESSER als ein anderes, der hat keine Ahnung vom Programmieren.

Zurück zum Thema.
Debuggt doch mal die Schleife. Während des Debuggens nehmt ihr einfach mal den Finger von der F8-Taste und lasst das Programm zwar gestartet, aber nicht weiterlaufen.


Dann Excel starten. Das MUSS funktionieren, tut es aber nicht!
Und in VB funktioniert es nun einmal, kann ja auch nichts dafür.

Neotracer64 14. Dez 2007 16:25

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Sleep(1)

sakura 14. Dez 2007 16:33

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Zitat:

Zitat von little-x
Nicht immer alles aufs Betriebssystem schieben.

Würde ich nicht tun, aber eventuell auf Dein Entwicklungssystem. Warum: ich habe Dein Problem nicht ;)
Zitat:

Zitat von little-x
Debuggt doch mal die Schleife. Während des Debuggens nehmt ihr einfach mal den Finger von der F8-Taste und lasst das Programm zwar gestartet, aber nicht weiterlaufen.

Gemacht:
Zitat:

Zitat von little-x
Dann Excel starten. Das MUSS funktionieren, tut es aber nicht!

Excel startet ohne Probleme in weniger als 4 Sekunden. Egal ob im Debugmodus (angehalten oder am laufen) oder außerhalb des Debugmodus, wenn das Programm läuft.

Wo auch immer Dein Problem liegt, auf meinem Laptop (Dual-Core, Vista Ultimate, Delphi 7 & RAD Studio 2007) kann ich es nicht nachvollziehen.

...:cat:...

Elvis 14. Dez 2007 16:34

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Zitat:

Zitat von little-x
Zitat:

Aber wer das ständig über DoEvents bzw. Application.ProcessMessages oder ähnliches regelt, sollte vielleicht besser bei Basic bleiben
So ein kluger Satz. Ja, ok, Du bist was besseres weil Du keine Ahnung von VB hast. Aber danke für die Hilfe. Ich bin zufrieden mit Delphi und werde deswegen sicher nicht zu VB schwenken. Aber deswegen muss man ja nicht alles toll finden. Und wer der Meinung ist, irgendein SW-Entwicklungswerkzeug wäre pauschal BESSER als ein anderes, der hat keine Ahnung vom Programmieren.

Delphi ist pauschal besser, wüsstest du was deine Programme tatsächlich machen, dann wäre das für dich ziemlich offensichtlich.
Allein die Tatsach DASS du VB benutzt hast sagt aus, dass du entweder ein Lemming bist, der MSFT überall hinfolgt, oder eben nicht weißt was deine Programme wirklich machen.
Das folgende Zitat zeigt, dass es letzteres ist:
Zitat:

Zitat:

Ich denke er hat ein Server Taskscheduler erwartet, wo die Zeitverteilung effektiver läuft.
Gar nix erwarte ich. Der Taskscheduler ist ok so wie er ist. Es laufen ständig "aktive" programme, die aber nicht gleich den Start von Standardanwendungen blockieren!
Du hast dir eine schleife gebaut, die X Sekunden lang sämtliche Zyklen fressen wird, die sie kriegen kann. Das heißt eine wirklich aktive Anwendung.
Es ist alles andere als überraschend, wenn andere Prozesse weniger Zyklen abkriegen...

alzaimar 14. Dez 2007 17:03

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Würde der ganze Heckmeck nicht auch auf C-Programme zutreffen?

Elvis 14. Dez 2007 17:08

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Zitat:

Zitat von alzaimar
Würde der ganze Heckmeck nicht auch auf C-Programme zutreffen?

Ja, VB als zeilenweise interpretiertes Skript kann halt nicht kontinuierlich genügend Zyklen verwenden.
Das ist eigentlich der einzige Grund, warum der gleiche Code in VB die Maschine nicht genauso ausbremst.
Praktisch alles außer VB würde sich genau wie Delphi-kompilierter Code verhalten.

alzaimar 14. Dez 2007 18:29

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Hi Elvis, die Frage war eigentlich rethorisch gemeint.
Ziemlich bescheuerter Thread, wenn Du mich fragst. Is ungefähr so, als ob man reißerisch schreibt:

EINFACHSTES Delphi schaltet PC aus!

Delphi-Quellcode:
Procedure TForm1.Button1Click (Sender);
Begin
  ExitWindowsEx(shOptions, 0)
End;
Unter der Prämisse, das der vollständige Code hier nicht angegeben ist.
:wall:

Elvis 14. Dez 2007 19:03

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Zitat:

Zitat von alzaimar
Hi Elvis, die Frage war eigentlich rethorisch gemeint.

Das hoffte ich. *g*
Zitat:

Ziemlich bescheuerter Thread, wenn Du mich fragst. Is ungefähr so, als ob man reißerisch schreibt:
EINFACHSTES Delphi schaltet PC aus!
lol! :lol:

mr_emre_d 15. Dez 2007 15:39

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Zitat:

Zitat von alzaimar
...

EINFACHSTES Delphi schaltet PC aus!

Delphi-Quellcode:
Procedure TForm1.Button1Click (Sender);
Begin
  ExitWindowsEx(shOptions, 0)
End;

lol danke ; das hab ich nicht gewusst^^ funzt der überhaupt (ich hab keine lust mein lapi zu restarten.. xD )
MfG

alzaimar 15. Dez 2007 15:46

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Zitat:

Zitat von mr_emre_d
lol danke ; das hab ich nicht gewusst^^ funzt der überhaupt

Zitat:

Zitat von alzaimar
Unter der Prämisse, das der vollständige Code hier nicht angegeben ist.

Was schließen wir daraus?

Die Muhkuh 15. Dez 2007 15:47

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Zitat:

Zitat von alzaimar
Zitat:

Zitat von mr_emre_d
lol danke ; das hab ich nicht gewusst^^ funzt der überhaupt

Zitat:

Zitat von alzaimar
Unter der Prämisse, das der vollständige Code hier nicht angegeben ist.

Was schließen wir daraus?

Das mr_emre_d nicht der Threadersteller little_x ist und das mr_emre_d noch nicht so viel Ahnung hat. :zwinker:

alzaimar 15. Dez 2007 15:51

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Falsche Antwort. Wir schließen daraus, das der von mir gepostete Quelltext nicht vollständig ist (was da steht, das kann man ja gar nicht draus schlie0en), und dann schließen wir letztendlich daraus, das er (der Quelltext) nicht so funzen tut, wie man vermutet, weil er ja nicht vollständig ist, wie ich schrieb. Der Quelltext.

Die Muhkuh 15. Dez 2007 15:53

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Ok, das nächste Mal schreib ich ein bisschen ausführlicher.

Mit dem "keine Ahnung haben" meinte ich schon, dass der Rest des Codes bei Dir fehlt. ;-)
Und das bei little_x noch Code fehlt, wurde sowieso schon geschrieben. :zwinker:

alzaimar 15. Dez 2007 16:14

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Muhkuh, Du überforderst mich :stupid: ich bin zelebral derzeit unpässlich. :zwinker:

Die Muhkuh 15. Dez 2007 16:17

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Zitat:

Zitat von alzaimar
Muhkuh, Du überforderst mich :stupid: ich bin zelebral derzeit unpässlich. :zwinker:

Zelebral oder zerebral? :zwinker: (Zweites macht mehr Sinn ;-) )

Nikolas 15. Dez 2007 17:41

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Zitat:

ich bin zelebral derzeit unpässlich.
Das ist doch eindeutig ein geplant eingesetztes Stilmittel. Die Aussage wird durch die Form verdeutlicht. :mrgreen:

alzaimar 15. Dez 2007 18:27

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Zerebral wg. zelebral, um genau su sein. :freak:

Elvis 15. Dez 2007 19:22

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Zitat:

Zitat von alzaimar
Zerebral wg. zelebral, um genau su sein. :freak:

Du sitzt also bei der Weihnachtsfeier besoffen mit 'nem Notebook unterm Tisch?

alzaimar 15. Dez 2007 20:46

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
:drunken: Touché.

Abba wir wern ot. hicks.

little-x 17. Dez 2007 08:18

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Im Grunde hat mich nur dieses neunmalkluge "jeder VB-Nutzer ist doof" aufgeregt. Erinnert mich irgendwie an "Windows-Nutzer sind doof". Oder: Ich trinke Tee und keinen Kaffee, also bin ich der bessere Mensch.

Ich habe mit VB, angefangen, ja gut ok. Das ist knapp 8 Jahre her und dauerte ca. 1 Jahr.Die meiste Zeit hatte ich mit Java zu tun, seit einem Jahr bin ich gezwungen, viel mit Delphi zu arbeiten, und langsam kann ich sagen, ich kenne Delphi. Aber es sind selbst aus heutiger Sicht mit VB gute Programme entstanden. Man kann auch in VB sehr gute und effiziente Programme entwickeln, wenn jemand das kategorisch ablehnt, dann aus Unvermögen, dieses zu erkennen.

Ich finde Delphi nicht schlecht. Aber man muss vor jedem Projekt entscheiden, welches die bessere Alternative ist. Wenn man natürlich einen beschränkten Horizont hat, weil man nur eine Sprache richtig gut kann, kann man natürlich auch keine Vor- oder Nachteile erkennen. Dann fallen Sätze wie
Zitat:

Delphi ist pauschal besser
Ich erwähnte ja schon dass ich Delphi gut finde. Aber Oh Mann, aber selten habe ich so was dämliches gelesen. Wie soll ich mit so einer dummen Aussage umgehen? Am besten gar nicht.

alzaimar 17. Dez 2007 08:20

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Zitat:

Zitat von little-x
...Dann fallen Sätze wie
Zitat:

Delphi ist pauschal besser
Ich erwähnte ja schon dass ich Delphi gut finde. Aber Oh Mann, aber selten habe ich so was dämliches gelesen. Wie soll ich mit so einer dummen Aussage umgehen? Am besten gar nicht.

Jupp, ignorieren.

Deine reißerische Überschrift deutete aber wirklich darauf hin, das Du ein scheuklappentragender VB-Jünger bist, der meint, VB sei das Zentrum der IT-Welt. Aber gut, es gibt genausoviele scheuklappentragende (Programmiersprache deiner Wahl)-Jünger, die meinen, (Programmiersprache deiner Wahl) sei das Zentrum der IT-Welt.

Nuclear-Ping 17. Dez 2007 10:22

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Worum gehts hier überhaupt? PEBCAC? UIE? Application.ProcessMessages?

Elvis 17. Dez 2007 10:30

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Zitat:

Zitat von alzaimar
Aber gut, es gibt genausoviele scheuklappentragende (Programmiersprache deiner Wahl)-Jünger, die meinen, (Programmiersprache deiner Wahl) sei das Zentrum der IT-Welt.

Ja, gibt es. Aber in diesem Falle stimmt es nunmal. VB kann nichts, was Delphi nicht auch, oftmals um Größenordnungen besser, kann.
Ich selbst bin gar nicht einmal mehr der große Delphi-Fan, benutze es sogar kaum noch, aber das VB pauschal schlechter ist, ist nunmal ein Fakt.
Sicher, ginge es um andere Sprachen, wäre ein pauschales besser/schlechter Blödsinn.
Hier aber wir haben hier 2 Tools, die auf exakt das gleiche Segment zielen. Wobei Delphi an Features ein Superset von dem von VB darstellt und somit auch eigentlich ein breiteres Segment als VB bedienen kann.

hoika 17. Dez 2007 10:42

Re: EINFACHSTES Delphi-Programm blockiert Betriebssystem
 
Hallo,

eine Frage wurde noch gar nicht gestellt.

Welches Betriebssytem verwendest du ?


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 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