Results 1 to 9 of 9

Thread: Lege waarde van ParamStr(1) werkt niet

  1. #1

    Lege waarde van ParamStr(1) werkt niet

    Hallo allemaal,

    Waarom werkt dit niet en hoe dan wel?

    Code:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      If Trim(ParamStr(1)) = '' then begin Close; exit; end;
    end;
    Met een hartelijke groet, Frans

  2. #2
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Je mag (1) alleen benaderen als 1<=paramcount

  3. #3
    VZIW is ParamStr(n) een lege string als n > ParamCount.
    Dus definieer "werkt niet"...

    Bart

  4. #4
    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;

  5. #5
    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

  6. #6
    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.

    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.
    De ApplicationController is de enige globale variabele die ik gebruik in mijn applicaties.

    Groetjes
    MacVersie
    Last edited by MacVersie; 21-Jun-19 at 09:18.

  7. #7
    Quote Originally Posted by MacVersie View Post
    Waarom beginnen met een formcreate.
    ParamStr(1) of ParamStr(n) kan volgens mij nooit leeg zijn, want dan is de Count 0 of de Count = n - 1.
    Pardon?
    ParamStr(0) hoort in principe nooit leeg te zijn (Windows).
    ParamStr(1) kan uiteraard gewoon leeg zijn.
    Delphi Code:
    1. begin
    2.   write('ParamCount: ',ParamCount);
    3.   writeln(', ParamStr(1): "',ParamStr(1),'"');
    4. 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

  8. #8
    En ParamStr(0) is in principe hetzelfde als Application.ExeName.
    1+1=b

  9. #9

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •