Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - program schließt sich sofot bei nur .dpr Datei
fcg - Fr 13.06.03 22:51
Titel: program schließt sich sofot bei nur .dpr Datei
hi
ich habe nur eine .dpr datei, die ich kompilieren will (ohne Units und Forms). nun läuft das auch alles, aber die Anwendung schließt sich direkt wieder. Wie kann ich das vermeiden, das die anwendung aktiv bleibt, und erst z.B auf mausklick beendet wird?
thÄnXx
fcg
AndyB - Fr 13.06.03 23:13
Titel: Re: program schließt sich sofot bei nur .dpr Datei
Und wohin soll der Mausklick gehen, wenn du kein Formular hast?
Delete - Sa 14.06.03 04:01
Zeig mal die dpr-Datei.
fcg - Sa 14.06.03 11:53
so sied es aus
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| program Project1;
uses Windows, Forms;
var h : TForm;
begin h := TForm.Create(nil); h.Show; end. |
für ne halb sekunde erscheint jetzt die Form, die ich nur zum Beispiel erzeugt habe...
fcg
AndyB - Sa 14.06.03 12:13
Titel: Re: program schließt sich sofot bei nur .dpr Datei
| fcg hat folgendes geschrieben: |
| ohne Units und Forms |
´
Und was ist das:
| Zitat: |
h := TForm.Create(nil);
h.Show; |
Äpfel und Birnen etwa?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| program Project1;
uses Windows, Forms;
var h : TForm;
begin Application.Initialize; h := TForm.Create(nil); h.Show; Appliation.Run; end. |
fcg - Sa 14.06.03 12:19
hi
das da oben sollte uhne Units mit Formen) heißen. Also keie Extra Units, wolte ich damit sagen... :oops:
Aber mit deinem Code hat sich nichts veändert. Prog beendet sich wieder sofort nach dem Compillieren...
fcg
AndyB - Sa 14.06.03 12:23
Kleine Verbesserung:
Delphi-Quelltext
1: 2: 3:
| Application.Initialize; Application.CreateForm(h, TForm); Appliation.Run; |
fcg - Sa 14.06.03 12:28
yo danke. jetzt funzt es!!
Die Paramter bie CreateForm sind aber andersrum ;-)
noch eine letzte frage. Wie mache ich das jetzt wenn ich wirklich keine Form haben will, sondern das das Prog jetzt wirklich nur im Hintergrund laufen soll. Es soll aktiv sein, aber ohne Form, geht das auch??
fcg
AndyB - Sa 14.06.03 12:48
| fcg hat folgendes geschrieben: |
| Die Paramter bie CreateForm sind aber andersrum ;-) |
Copy&Paste Sperre :D
| Zitat: |
| Wie mache ich das jetzt wenn ich wirklich keine Form haben will, sondern das das Prog jetzt wirklich nur im Hintergrund laufen soll. Es soll aktiv sein, aber ohne Form, geht das auch?? |
Sowas nennt sich dann Systemdienst und dafür gibt es (ab der Professional Version) ensprechende Komponenten.
Eine andere Möglichkeit besteht in einem Versteckten Formular (am besten gleich direkte WinAPI Nutzung) und einer Messageloop.
Popov - Sa 14.06.03 12:55
Also, grob gesgt gibt es mehrere Möglichkeiten ein Programm zu behandeln:
- Ein standard Delphiprogramm mit Formularen. Maus- und Tastatureingaben werden von den jeweiligen aktiven Formularen abgearbeitet.
- Ein Konsolenprogramm mit Eingabe und Ausgabe über ein Konsolenfenster. Das Programm steht in der DPR Datei (weitere Units sind möglich, aber nicht notwendig)
- Ein reines Pascalprogramm, jedoch kein Konsolenprogramm. Ein- und Ausgaben (Maus, Tastatur, Monitor) sind nicht möglich. Man kann aber natürlich auf Dateien oder sonstiges (z.B. OLE Automation) zugreifen.
- Ein NonVcl Programm. Auch ein reines Pascalprogramm, aber mit etwas mehr Möglichkeiten. Es wird eine Schleife erstellt die Messages empfängt und abarbeitet. Formulare mit Objekten können erstellt werden, müssen aber nicht (meiner Kenntnis nach).
fcg - Sa 14.06.03 13:04
| Popov hat folgendes geschrieben: |
- Ein Konsolenprogramm mit Eingabe und Ausgabe über ein Konsolenfenster. Das Programm steht in der DPR Datei (weitere Units sind möglich, aber nicht notwendig)
|
Hatte an sowasglaube ich dann gedacht. Wie mache ich das dann, das das Prog im bg weiter arbeitet..??
Gibts da irgendwoe Tutors oder Hilfen zu??
fcg
Popov - Sa 14.06.03 13:27
Was verstehst du unter aktiv bleiben. In welcher Hinsicht soll es aktiv bleiben. Ich glaube du brauchst ein NonVcl Programm. Dazu mußt du aber die ausquetschen, die sich da besser auskennen. Auf der Seite von Luckie findest du einige Tuts und Links zu weiteren NonVcl Seiten.
Aber gehen wir mal davon aus, daß du einfach nur eine Kleinigkeit machen willst. Dann reicht auch sowas:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| program Project1;
uses Dialogs;
begin ShowMessage('Hallo ' + InputBox('Eingabe', 'Bitte Namen eingeben', 'Popov')); end. |
Oder ein Konsolenprogramm:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| program Project1; {$APPTYPE CONSOLE}
uses Windows;
var s: String; begin Write('Bitte Namen eingeben: '); Readln(s); Writeln('Hallo ', s); Readln; end. |
fcg - Sa 14.06.03 13:46
ich meine mit aktiv bleiben, eigentlich nur das es sich nicht schließt! Das Programm soll ständig schauen, ob ein ganz bestimmtes Fenster offen ist und dieses dann schließn. Mehr soll das Programm eigentlich nicht machen.
fcg
Delete - Sa 14.06.03 14:09
Mach ein ganz normales VCL Programm, pack es in die TNA und mach das Formular unsichtbar. Über ein Menü von dem TNA Icon kann man es dann sogar bei Bedarf schließen.
Das wäre jetzt das einfachste für dich.
fcg - Sa 14.06.03 14:42
Das habe ich auch schon gemacht. Aber ich dachte mir halt, das es nicht die optimlalösung ist, und deswegen habe ich nach nem anderen Weg gesucht, aber ich glaube das mit Service enrichten ist nen bissle schwieriger...
fcg
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!