Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi [Kontextmenü] - Pfad in einem Parameter übergeben (https://www.delphipraxis.net/82561-%5Bkontextmenue%5D-pfad-einem-parameter-uebergeben.html)

xZise 15. Dez 2006 15:42


[Kontextmenü] - Pfad in einem Parameter übergeben
 
Ich erstelle einen Eintrag in der Registry, für das Kontextmenü.

Und wenn das ausgeführt wird, dann muss ich immer die Teilparamter zusammenpflicken.
Was muss ich ändern, damit der ganze Pfad (mit den Leerzeichen) in einem Paramter übergeben wird?
Delphi-Quellcode:
reg.WriteString('', '"' + ParamStr(0) + '" %1');

Christian Seehase 15. Dez 2006 15:56

Re: [Kontextmenü] - Pfad in einem Parameter übergeben
 
Moin Fabian,

auch das %1 muss in "" eingeschlossen werden.

Delphi-Quellcode:
reg.WriteString('', '"' + ParamStr(0) + '" "%1"');

xZise 15. Dez 2006 15:59

Re: [Kontextmenü] - Pfad in einem Parameter übergeben
 
Also dann springt er nicht mehr korrekt an:

Delphi-Quellcode:
program FileLink;

uses
  Forms, ClipBrd, SysUtils,
  uMain in 'uMain.pas' {Form1};

{$R *.res}

var
  i : Integer;
begin
  Application.Initialize;

  if ParamCount > 1 then begin
    Clipboard.AsText := ParamStr(1);
    for i := 2 to ParamCount do
      Clipboard.AsText := Clipboard.AsText + ' ' + ParamStr(i);
  end;

  if (not FileExists(Clipboard.AsText)) or (ParamCount = 1) then begin
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end;
end.
Entweder der Pfad ist dann falsch, oder es gibt nur einen Paramter (obwohl der ja der Parameter des Programms ist...)

Christian Seehase 15. Dez 2006 16:05

Re: [Kontextmenü] - Pfad in einem Parameter übergeben
 
Moin Fabian,

was steht denn dann in Paramstr(1).

BTW: Das zusammenbasteln kannst Du dann auch weglassen.

xZise 15. Dez 2006 16:31

Re: [Kontextmenü] - Pfad in einem Parameter übergeben
 
Also die ParamCount ist nicht größer 1 ? o.O Dabei ist doch ParamStr(0) immer ?

BTW: Ich weiß das ich es dann lassen kann :P Um genau zu sein, dass war der grund, warum ich fragte :P

Also wenn ich immer statt bei "ParamCount" 1 eine 0 schreibe gehts :P lol ;) Das muss man mal kapieren ^^

Christian Seehase 15. Dez 2006 16:41

Re: [Kontextmenü] - Pfad in einem Parameter übergeben
 
Moin Fabian,

ParamStr(0) enthält immer den Pfad des Programmes, ist, inhaltlich, identisch mit Application.Exename.

Bei Deinem Beispiel sollte ParamStr(1) den übergebenen Pfad enthalten, oder einen Leerstring, falls kein Pfad übergeben wurde (z.B. Direktaufruf des Programmes).

Was Du allerdings mit dem Clipboard willst ist mir ein Rätsel.

xZise 15. Dez 2006 16:50

Re: [Kontextmenü] - Pfad in einem Parameter übergeben
 
Das will ich mit Clipbrd

Aber draum ging es mir nicht, sondern darum, dass ja ParamStr(0) ja auch ein "Paramter" ist ;) Jedenfalls laut funktionsaufruf ;) Und deshlab habe ich angenommen, dass die auch zu ParamCount aufgenommen wird.


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