Hallo allemaal,
Waarom werkt dit niet en hoe dan wel?
Met een hartelijke groet, FransCode:procedure TForm1.FormCreate(Sender: TObject); begin If Trim(ParamStr(1)) = '' then begin Close; exit; end; end;
Hallo allemaal,
Waarom werkt dit niet en hoe dan wel?
Met een hartelijke groet, FransCode:procedure TForm1.FormCreate(Sender: TObject); begin If Trim(ParamStr(1)) = '' then begin Close; exit; end; end;
Je mag (1) alleen benaderen als 1<=paramcount
VZIW is ParamStr(n) een lege string als n > ParamCount.
Dus definieer "werkt niet"...
Bart
Close in een FormCreate gaat niet werken (lees: mag niet).
Je kunt postmessage proberen.
PostMessage(Self.Handle, WM_CLOSE, 0, 0);
Maar als het je enige form is kun je ook dit doen.
Application.Terminate;
Of Self.Release. Dat doet volgens mij ook een PostMessage op de achtergrond. Werkt geloof ik ook.
Maar als je toch opstart parameters wilt checken, dan kan je dit ook in je dpr doen, voordat je überhaupt een form maakt. Je kan het maken van het form en het runnen van de application dan helemaal overslaan.
1+1=b
Waarom beginnen met een formcreate.
Een form is een dom ding, die je zo clean mogelijk moet houden.
De intelligentie ligt in de controllers.
Start de applicatie met een eigen application controller.
Deze controller controleert het één en ander.
Is alles goed gegaan, dan mag de main form gecreëerd worden en anders doe je niets meer en sluit de applicatie.
Ik gebruik nooit een FormCreate. Dit is een stukje inconsequente code van Delphi.
Altijd aForm := TForm.create en aFrame := TFrame.create.
ParamStr(1) of ParamStr(n) kan volgens mij nooit leeg zijn, want dan is de Count 0 of de Count = n - 1.
De ApplicationController is de enige globale variabele die ik gebruik in mijn applicaties.Code:begin try Application.initialize; ApplicationController := TApplicationController.create([]); try ApplicationController.run; Application.run; finally ApplicationController.free; end; except on oException: Exception do Application.showException(oException); end; end.
Groetjes
MacVersie
Last edited by MacVersie; 21-Jun-19 at 09:18.
Pardon?
ParamStr(0) hoort in principe nooit leeg te zijn (Windows).
ParamStr(1) kan uiteraard gewoon leeg zijn.
Delphi Code:
begin write('ParamCount: ',ParamCount); writeln(', ParamStr(1): "',ParamStr(1),'"'); end.
Build en roep aan zonder opdrachregelparameters.
Geeft als het goed is: ParamCount: 0, ParamStr(1): ""
Bart
Last edited by Bart B; 22-Jun-19 at 00:03. Reason: typo
En ParamStr(0) is in principe hetzelfde als Application.ExeName.
1+1=b
Omgekeerd?
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks