Autor |
Beitrag |
*Knust*
      
Beiträge: 95
|
Verfasst: So 20.04.08 13:38
Moin!
Ich baue gerade an einem Programm und wenn ich das ausprobiere(F9) läuft es auch, wenn ich es aber wieder beende durch close und der Quelltext wieder angezeigt wird, ist der grüne Startpfeil immernoch grau als würde das Programm noch laufen... wodran liegt das???
mit freundlichen Grüßen
Knust
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: So 20.04.08 13:55
Hi,
Close beendet dein Programm nicht, sondern versteckt die Form. Versuchs mal mit Application.Terminate;
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 20.04.08 13:57
Es wäre sehr hilfreich, wenn du etwas mehr über dein Programm sagen würdest. Was acht es? Wie macht s das? Fremdkomponenten?
@Hidden: Wenn das Hauptfenster geschlossen wird, wird auch der Prozess beendet, wenn keine anderen Threads mehr laufen.
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: So 20.04.08 14:19
@Hidden: Close schließt die Form, Hide versteckt es.
@*Knust*: Versuch's mal hiermit:
Delphi-Quelltext 1:
| Application.MainForm.Close; |
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: So 20.04.08 14:54
Jakob_Ullmann hat folgendes geschrieben: | @Hidden: Close schließt die Form, Hide versteckt es.
@*Knust*: Versuch's mal hiermit:
Delphi-Quelltext 1:
| Application.MainForm.Close; | |
Was Luckie gesagt hat dürfte stimmen, das jetzt aber nichtmehr: Wenn ich die Hauptform schließe, wird das programm beendet. Generall bei einer Form macht close aber wohl doch Hide und löst dabei OnClose auf, tut also so, als hätte der user aufs rote kreuz geklickt(  ). Die Form wird nicht zerstört(das Thema hatten wir doch gestern schoma^^)
@*Knust*: Schau mal, ob Program Reset auch noch geht. Dann wurde dein Programm wirklich nicht beendet(bzw. Delphi hat davon zumindest ncihts mitbekommen  ).
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
JungerIslaender
      
Beiträge: 427
Erhaltene Danke: 5
Win XP
Delphi 7; Delphi 2005
|
Verfasst: So 20.04.08 15:11
Also ich hab zwar selbst nicht unbedingt soviel Ahnung vom Programmieren... aber die Befehle die ihr da alle schreibt??????
Wenn ich mein Programm beenden möchte mach ich das einfach so:
Delphi-Quelltext
Was is dann der Unterschied zu dem was ihr geschrieben habt??? (Bei mir wird das Programm dann auch
wirklich beendet)
|
|
*Knust* 
      
Beiträge: 95
|
Verfasst: So 20.04.08 16:00
Also application.mainfrom.close bringt nichts... da wir das programm auch nich richtig geschlossen.
Das Programm hat nur eine Form und der gesamte Quelltext steht in einer Unit...
Form1.close geht ja eben nich, das is es ja was ich so komisch finde...
Ich teste Das programm während ich Delphi an hab mit Klick auf den grünen Start-pfeil und es läuft,
wenn ich es aber durch das schließen-Kreutz oben rechts beende, erscheint der Objekt-Inspector und die Objekt-Hierarchie nicht mehr, auch der grüne Startpfeil ist noch grau als wenn das Programm noch laufen würde nur dass das Fenster nicht mehr da ist und NEIN, ich habe keinen hide-Befehl im Quellcode stehen  ^^
Das nervige daran ist natürlich, dass ich das Programm dann ohne Delphi(Programm zurücksetzen) nicht mehrfach nacheinander öffnen und schließen kann, weil der Speicherplatz anscheinend nicht mehr freigegeben wird... nervt n bisschen.
Irgendwann kommt dann die Fehlermeldung: Programm kann nicht gestartet werden weil die Auslagerungsdatei zu klein ist (oder so)
Hat irgendjemand ne Ahnung, wodran das liegen könnte?
Knust
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: So 20.04.08 16:25
probiers mal mit application.terminate
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: So 20.04.08 16:32
Hätte mir eigentlich auch früher einfallen können: Falls Application.Terminate nichts bringt kannst du auch Halt; verwenden.
|
|
*Knust* 
      
Beiträge: 95
|
Verfasst: So 20.04.08 16:38
Also Application.terminate und halt bringen nichts...
???
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 20.04.08 16:44
So lange du uns verschweigst, was dein Programm macht, wie es das macht und ob du Fremdkomponenten nutzt, wird das hier nur ein heiteres Rumgerate bleiben.
Und was Application.Terminate und Halt angeht, also bevor ich mein Auto jedes mal vor 'nen Laternenpfahl setze, um anzuhalten, würde ich dochmal die Bremsenkontriollieren lassen.
|
|
*Knust* 
      
Beiträge: 95
|
Verfasst: So 20.04.08 16:50
...ich glaube kaum, dass das was helfen wird wenn ihr wisst, was das programm macht :/
aber egal: es entschlüsselt viginere-verschlüsselte texte ohne das passwort zu kennen und benutzt nix weiter als die eine Form die eine Unit. Ich verwende keine anderen Programme nebenbei...
hat das geholfen??? ^^
mfg
Knust
|
|
SmileySN
      
Beiträge: 297
WinXP, Win7
Delphi 2010 Professional
|
Verfasst: So 20.04.08 16:50
Ich könnte mir denken, dass das Programm in einer Endlosschleife hängt und sich daher nicht abbrechen lässt.
Hast du schon mal eine Befehl in das OnClose Ereignis der Form geschrieben und darauf getriggert.
Wenn Dein Programm beim schließen dort nicht ankommt, dann solltest Du Dir Deinen Code nochmal ansehen, in dem Du Schleifen verwendest und eventuell mal ein ProcessMessages mit einbauen.
|
|
*Knust* 
      
Beiträge: 95
|
Verfasst: So 20.04.08 16:53
doch, ich habe mit showmessage('hallo'); in der procedure tform1.close überprüft, ob es ankommt ^^
und es kommt an... es ist doch irgendwie unlogisch...
Knust
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: So 20.04.08 16:54
Schick doch mal ein wenig von deinem Code.
|
|
*Knust* 
      
Beiträge: 95
|
Verfasst: So 20.04.08 16:56
Der Code ist 500 Zeilen lang...welchen Teil hättest du denn gerne???^^
Knust
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: So 20.04.08 16:59
Kommt darauf an, was das Programm alles macht. Also auf jeden Fall den Teil zum Decodieren. Setz mal ein paar Breakpoints. Der Teil, der nicht ausgeführt wird + der Teil darüber (letzte Konstruktion oder die letzten paar Zeilen).
PS: Vll liegt es auch daran, dass du irgendwann mal das Programm mit dem Taskmanager gekillt hast?
|
|
*Knust* 
      
Beiträge: 95
|
Verfasst: So 20.04.08 17:01
Das Ding ist ja, dass das Programm ansonsten einwandfrei läuft... es entschlüsselt fleißig alle Texte die ich ihm gebe... nur ausmachen kann mans halt nicht wirklich...
Der Decodierungscode hat (glaube ich) nichts mit dem Problem zu tun, dass er den reservierten Arbeitsspeicher nach dem Beenden nicht mehr rausrückt, weil da nur mit von mit erstellten integer, string, listen und array- variablen gearbeitet wird...
|
|
*Knust* 
      
Beiträge: 95
|
Verfasst: So 20.04.08 17:03
Mit dem Taskmanager gekillt? du meinst wenn ichs getestet habe?
-keine ahnung ^^ könnte ganz vllt sein, glaub ich aber nich ^^
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: So 20.04.08 17:05
Naja, weil wenn du es mit dem Taskmanager killst, merkt Delphi nichts davon und es kommt zu dem beschriebenen Problem (hab mal JustForFun ein Proggi geschrieben, das sich auf keinen Fall schließen lassen sollte - außer mit TaskManager. Dann hab ich's mit TM gekillt und ich musste Delphi schließen - könntest du auch mal probieren).
|
|