Halli hallo…
Ich habe eine Frage bezüglich der Problematik Programme in einer Delphi-Routine zu öffnen.
Ist es möglich das oben beschriebene Problem zu lösen und zeitgleich zu überprüfen, ob das Programm noch läuft?
Würde mich über eine Antwort sehr freuen, die ich auch verstehe, da ich erst seit einem 3/4 Jahr in der Schule mit Delphi programmiere und das Anspruchsvollste was wir gemacht haben ist eine Ausgabe von 150 Primzahlen in ein StringGrid…
Hoffe ich habe das Problem verständlich beschrieben und hoffe auf baldige Antwort…
Viel Dank, BlooDHanD
Also ich habe es jetzt immerhin geschafft die Programme per ShellExecute zu starten…Mein Programm ist, das die Dateien (.exe) die ich öffne nicht gleichzeitig geöffnet werden dürfen, weil sie sich sonst afhängen…
Kann mir vlt jemand sagen, wie ich eine Verzögerung einbauen kann, sodass das zweite Programm verzögert aufgeht…
Vielen Dank schonmal, BlooDHanD.
Programm mit. exe Endung per DelphiProgramm öf
nach einigem herumprobieren klappte auch das…
damit hätte sich das geklärt…
danke noch einmal für potentielle Hilfe und wünsche eine gute Nacht…
Hallo,
dann poste doch mal hier, wie Du das gemacht hast. Das interessiert bestimmt noch mehr Leute.
Gruß, Niels
Auf die Bitte poste ich natürlich gerne meinen Quelltext, weiss allerdings leider nicht wie ich diesen als Quelltext kennzeichnen kann…
Zur erklärung: Die Server sind Server für ein Onlinespiel, sodass ich diese Offline spielen kann…
uses ShellApi;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin //FormCreate Timer abstellen
timer1.Enabled:=false;
end;
procedure TForm1.server_start_Click(Sender: TObject);
begin
//Start Server1, ändern der Online/Offlineausgabe für den Gameserver
ShellExecute(Application.Handle, ‚open‘, PChar(’„C:\Server1“’), nil, nil, SW_SHOW);
Label1.Color:=clLime;
Label1.Caption:=‚Online‘;
//Start des Timers mit 5000ms
timer1.Interval:=5000;
timer1.Enabled :=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
//Timer beenden und start Server2, ändern der Online/Offlineausgabe des Login servers
timer1.Enabled:=false;
ShellExecute(Application.Handle, ‚open‘, PChar(’„C:\Server1
2“’), nil, nil, SW_SHOW);
Label2.Color:=clLime;
Label2.Caption:=‚Online‘;
end;
procedure TForm1.server_beenden_Click(Sender: TObject);
begin
//Ändern der Online/Offlineausgabe für beide Server
Label1.Color:=clRed;
Label1.Caption:=‚Offline‘;
Label2.Color:=clRed;
Label2.Caption:=‚Offline‘;
end;
procedure TForm1.beenden_Click(Sender: TObject);
begin //Beenden
close;
end;
Wie man sieht is das Programm noch nich ganz fertig…
ich muss noch einstellen, das das Programm überwacht ob beide Server noch Laufen und ich weiss noch nich wie ich innerhalb der Routine die Server beende… aber denke das kommt noch…
weiss allerdings leider nicht wie ich diesen als Quelltext
kennzeichnen kann…
Du kannst das Tag „pre“ benutzen
> ShellExecute(Application.Handle, 'open', PChar('"C:\Server1"'), nil, nil, SW\_SHOW);
Das PChar() kannst Du weglassen, Delphi macht das bei konstanten Ausdrücken selber (so wie auch beim ‚open‘). Wenn Du natürlich eine String-Variable benutzt, muss das PChar stehenbleiben.
ich muss noch einstellen, das das Programm überwacht ob beide
Server noch Laufen und ich weiss noch nich wie ich innerhalb
der Routine die Server beende…
eigentlich hätte mich genau das interessiert. Hast dDu mal nachgeschaut, ob die Server über eine DDE-Schnittstelle o.ä. verfügen?
Gruß, Niels
Hab noch eine Frage…
Wie kann ich ein TEdit in ein TStringList umwandeln???
Ich möchte den Inhalt von dem TEdit in einem Textdatei abspeichern, um es später wieder aufrufen zu können…
DAnke schonmal… BlooDHanD
Hallo,
eine TSTringList macht eigentlich nur Sinn, wenn es mehrere Strings sind.
Ansonsten nimmst Du die normalen Dateiroutinen (Assignfile, reset, rewrite) oder FileStreams. Alternativ wäre auch noch TIniFile zu nennen.
Gruß, Niels
Hallo,
Du willst also Programm1 starten und wenn das beendet ist dann Programm2? Dann ist ShellexecuteEx dein Freund!
http://www.delphipraxis.net/post244479.html
Grüße
Wolfgang