Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit Parameter (https://www.delphipraxis.net/10161-problem-mit-parameter.html)

synex 12. Okt 2003 19:48


Problem mit Parameter
 
Hi Leute

Ich hab ein Problem:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var sfi: TSHFILEINFO;
begin
if paramstr(1)='-sf' then
        begin
        SHGetFileInfo(PChar(paramstr(2)),0,sfi,sizeof(sfi),SHGFI_DISPLAYNAME);
        file:=expandfilename(sfi.szDisplayName);
        form1.Hide;
        form2.show;
        end;
end;
Nur zur Info: diese SHGetFileInfo Funktion macht aus kurzen Dateinamen (blabla~1.dat) lange (blablablabla.dat).

Also jetzt das Problem: Wie man sieht wird, wenn der Parameter -sf verwendet wird, anstatt Form1 Form2 angezeigt. Bessergesagt, es sollte so sein. Wenn ich jetzt das Programm starte kommt nur
Code:
Zugriffsverletzung bei Adresse 00456346 in Modul 'Project1.exe'. Lesen von Adresse 000002EC
und das Programm startet mit Form1.

Wieso geht das nicht? Die anderen Parameter die ich noch behandle gehen einwandfrei, wobei ich bei denen nur mit Form1 arbeite.

Danke schonmal für eure Hilfe

MfG synex

phlux 12. Okt 2003 20:25

Re: Problem mit Parameter
 
Moin du darfst das ganze net im OnCreate deiner Form aufrufen, da zu dem zeitpunkt deine 2te Form noch gar net erstellt worden ist (so denke ich) du musst das alles im richtigen Source des Progs reinschreiben, den findest du wenn du auf Projekt gehst und View Source (so heißts bei mir da engl. Version) anklickst, dann dürftest du sowas sehn:
Delphi-Quellcode:
program Project1;

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

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
In dem Code musst du dann deinen Parameter abfragen, und dann dementsprechend die Form erstellen.

mfg phlux :hi:

synex 12. Okt 2003 21:01

Re: Problem mit Parameter
 
Wie muss ich denn dort eine Prozedur schreiben?
Wie muss ich das Ganze nennen, weil form1.formcreate kanns ja schlecht sein.

phlux 12. Okt 2003 21:15

Re: Problem mit Parameter
 
ist eigentlich ganz einfach:

Delphi-Quellcode:
program Project1;

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

{$R *.res}

var
  param: String;

begin
  param := Copy(ParamStr(1),1,Length(ParamStr(1)));
  if UpperCase(param) = 'FORM1' then
  begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  else if UpperCase(param) = 'FORM2' then //Angenommen unsere andere Form hieße Form2 dann...
  begin
    Application.Initialize;
    Application.CreateForm(TForm2, Form2);
    Application.Run;  
  end;
end.

synex 13. Okt 2003 14:17

Re: Problem mit Parameter
 
Hui danke!

mfg synex


Alle Zeitangaben in WEZ +1. Es ist jetzt 01: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