Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Parameter-Verarbeitung in Program-Unit (https://www.delphipraxis.net/50689-parameter-verarbeitung-program-unit.html)

Nicolai1234 29. Jul 2005 16:48


Parameter-Verarbeitung in Program-Unit
 
Hallo,
der Aufruf in meiner Program-Unit (wie nennt man die eigentlich richtig?) sieht momentan so aus:
Delphi-Quellcode:
begin

  Application.Initialize;
  Application.Title := 'FTPRemote';
  Application.CreateForm(TStartForm, StartForm);
  Application.Run;

end.
also eigentlich ganz normal. Es wird eben nur ein Form erzeug.

Nun möchte ich, dass je nachdem, wie die Parameter beim Start der Anwendung sind, ein anderes Form erzeugt wird.

Also wenn jemand das Programm mit [name].exe -Server startet, soll der Aufruf so
Delphi-Quellcode:
Application.CreateForm(TServer, Server);
sein und nicht mehr
Delphi-Quellcode:
Application.CreateForm(TStartForm, StartForm);
Die entsprechenden Formulare existieren alle. Daher meine Frage; kann man das so irgendwie umsetzen?

Vielen Dank im voraus
Nicolai

(wenn jemand einen besseren Titel weiß, wäre ich echt dankbar)

marabu 29. Jul 2005 17:18

Re: Parameter-Verarbeitung in Program-Unit
 
Hallo Nicolai,

du könntest es in deiner Projektdatei so versuchen:

Delphi-Quellcode:
var
  param: string;
begin
  if ParamCount = 0 
    then param := ''
    else param := Uppercase(ParamStr(1));
  if param = '-SERVER'
    then Application.CreateForm(TServer, Server)
    else Application.CreateForm(TStartForm, StartForm);
  ...
end;
Grüße vom marabu

Nicolai1234 29. Jul 2005 17:28

Re: Parameter-Verarbeitung in Program-Unit
 
Ne, leider nicht, wenn man das mit einer einfachen if-Abrfage macht (auch wenn else dabei ist), kann man nicht mal mehr F9/Start drücken.
Fehlermedungen kommen dafür keine :?

marabu 29. Jul 2005 17:40

Re: Parameter-Verarbeitung in Program-Unit
 
Hallo Nicolai,

ist schon klar - wenn du so abstruse Sachen machen willst, dann kannst du das Projekt nur noch mit dem command line compiler übersetzen, da die IDE es nicht mag, wenn du am project file rumfummelst.

marabu

MaBuSE 29. Jul 2005 17:54

Re: Parameter-Verarbeitung in Program-Unit
 
Zitat:

Zitat von marabu
ist schon klar - wenn du so abstruse Sachen machen willst, dann kannst du das Projekt nur noch mit dem command line compiler übersetzen, da die IDE es nicht mag, wenn du am project file rumfummelst.

In einer langen Partnerschaft, lernt man die Tücken seiner Freundin kennen.
Ich gehe mit meiner Delphi in solchen Fällen so um:

Delphi-Quellcode:
program Project1;

uses
  Forms,
  SysUtils,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
  {$IFDEF FUER_DIE_BOESE_IDE} 
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
  {$ELSE}

  // hier steht unser Quelltext
  Application.Initialize;
  if UpperCase(ParamStr(1)) = 'SERVER' then
  begin
    Application.CreateForm(TForm1, Form1);
  end
  else
  begin
    Application.CreateForm(TForm2, Form2);
  end;
  Application.Run;
  {$ENDIF}
end.
Der Quelltext zw. IF und ELSE ist nur für die IDE und hat keine Funktion.
(Das Symbol darf natürlich nie definiert werden :-) )

Nicolai1234 29. Jul 2005 17:58

Re: Parameter-Verarbeitung in Program-Unit
 
Vieln Dank natürlich (auch wenn ich es noch nicht getestet habe.

Ich verstehe nur nicht, warum der obere Quelltext später nicht beachtet wird...

MaBuSE 29. Jul 2005 18:01

Re: Parameter-Verarbeitung in Program-Unit
 
Zitat:

Zitat von Nicolai1605
Ich verstehe nur nicht, warum der obere Quelltext später nicht beachtet wird...

Delphi-Referenz durchsuchenBedingte Compilierung


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz