AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Programm nach Parameterwechsel beenden und neu starten
Thema durchsuchen
Ansicht
Themen-Optionen

Programm nach Parameterwechsel beenden und neu starten

Ein Thema von eddy · begonnen am 8. Jun 2003 · letzter Beitrag vom 9. Jun 2003
Antwort Antwort
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#1

Programm nach Parameterwechsel beenden und neu starten

  Alt 8. Jun 2003, 16:42
Hallo Leute,

damit ich mir nicht immer meine Datenbank-Dateien zur Schnecke mache, wenn mal wieder etwas beim Testen anders funktioniert als wie ich mir das gedacht hatte, habe ich ein Verzeichnis \MyProg\Daten und ein Verzeichnis \MyProg\Daten_für_Test.

Wenn ich zwischen beiden wechseln will, clicke ich auf einen Button, der in meiner INI-Datei das Datenverzeichnis ändert und beende meine Anwendung (Application.Terminate).

Jetzt muß ich mein Programm manuell neu starten. Funktioniert prima, aber ich hätte es gern automatisch, d.h. Programm beendet sich selbst und startet sofort mit den geänderten Werten neu.

Weiß jemand, ob das geht und wenn ja, wie??

mfg
eddy
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 8. Jun 2003, 17:51
Moin Eddy,

nur so eine Idee:
Jedes Programm kann das jeweils andere starten, und sich dann beenden.
In der Projektdatei, vor Application.Run, wird dann geprüft, ob das jeweils andere Programm noch läuft, und solange gewartet, bis diese nicht mehr der Fall ist. Am sichersten wohl mit einem Timeout, falls Du mal beide von "ausserhalb" startest.

Du müsstest Dir halt nur noch etwas einfallen lassen, woran Du die verschiedenen Versionen auseinanderhalten, bzw. womit Du sie finden kannst (z.B. bestimmte Caption).
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
praktiker

Registriert seit: 9. Jun 2003
Ort: Hesedorf
11 Beiträge
 
#3
  Alt 9. Jun 2003, 11:56
Hi,

setze erfolgreich diese von mir entwickelte Variante ein

Delphi-Quellcode:
(* Schließt alle offenen Datenbanken*) 
procedure closealldatabase;
var i:integer;
begin
if session.databasecount > 0 then
for i:=0 to Session.DatabaseCount-1 do
Session.Databases[i].Close;

end;

function startwinproc(const value:String;param:String;Mode: boolean ):hwnd;

type
TfileName = array [0..128] of char; {Für Windows Aufrufkonvention} 
pFileName = ^TfileName; {Zeiger auf Char Nullterminiert bereitstellen} 
varszbuffer:Tfilename; {ZeigerVariable für das Array} 
czbuffer:Tfilename; {ZeigerVariable für das Array} 
pBuffer:pFilename;
cBuffer:pFilename; {Zeiger auf den Dateinamen} 
begin
result:=0;

if mode and not FileExists(value) then
showmessage(format( 'Laden des externen Programms %s fehlgeschlagen.',[value]));
pbuffer:=@szbuffer; {Puffer zuweisen} 
cBuffer:=@czBuffer;
strPcopy(pbuffer^,value); {Nulltermierter String wandeln} 
strPcopy(cbuffer^,Param); {Nulltermierter String wandeln} 
result:=ShellExecute(Application.Handle,PChar('open'),szbuffer,czBuffer,nil,SW_NORMAL);
end;

procedure Restartprogram;
var param:^String;
begin

new(param);
closealldatabase; // Siehe Funktion oben
(* GGF Parameter mit auf den Weg geben sonst mit '' vorbelegen!*) 
param^:=''; // für Kommandzeile
Startwinproc(paramstr(0),Param^,true) ;// Siehe Funktion oben
dispose(param);
application.terminate;
end;
[Edit=Sakura]Delphi-Tags gesetzt[/Edit]
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#4
  Alt 9. Jun 2003, 18:42
Hallo praktiker,

danke für den Quelltext. Da werd' ich wohl ein bischen Zeit zum Probieren investieren müssen!!

mfg
eddy
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:25 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