![]() |
[Unicode/NT] Argumente eines Programms holen ...
zu Beitrag
![]() Zitat:
Und dann steht auch noch vollgendes im Win32 SDK. Zitat:
So, nun muß ich wohl auch noch meine Version vorstellen -.-''
Delphi-Quellcode:
Function _ParamCount: LongInt;
Function ParamStrA(Index: LongInt): AnsiString; Function ParamStrW(Index: LongInt): WideString;
Delphi-Quellcode:
// © 1997-2005 by FNS Enterprize's™
// 2003-2005 by himitsu @ Delphi-PRAXiS Function _ParamCount: LongInt; Var P: PAnsiChar; B: Boolean; Begin Result := 0; P := GetCommandLineA; If P <> nil Then Dec(Result) Else Exit; While P^ <> #0 do Begin While (P^ <> #0) and (P^ <= ' ') do Inc(P); B := False; If P^ <> #0 Then Inc(Result); While (P^ <> #0) and ((P^ > ' ') or B) do Begin If P^ = '"' Then B := not B; Inc(P); End; End; End; Function ParamStrA(Index: LongInt): AnsiString; Var P, P2: PAnsiChar; i: Integer; B: Boolean; Begin If Index = 0 Then Begin SetLength(Result, MaxPath); SetLength(Result, GetModuleFileNameA(0, Pointer(Result), MaxPath)); Exit; End Else If Index < 0 Then Inc(Index); P := GetCommandLineA; If P <> nil Then While P^ <> #0 do Begin While (P^ <> #0) and (P^ <= ' ') do Inc(P); P2 := P; i := 0; B := False; While (P2^ <> #0) and ((P2^ > ' ') or B) do Begin If P2^ <> '"' Then Inc(i) Else B := not B; Inc(P2); End; If (Index = 0) and (P <> P2) Then Begin SetLength(Result, i); i := 1; Repeat If P^ <> '"' Then Begin Result[i] := P^; Inc(i); End; Inc(P); Until P >= P2; Exit; End; P := P2; Dec(Index); End; Result := ''; End; Function ParamStrW(Index: LongInt): WideString; Var P, P2: PWideChar; i: Integer; B: Boolean; Begin If Index = 0 Then Begin SetLength(Result, MaxPath); SetLength(Result, GetModuleFileNameW(0, Pointer(Result), MaxPath)); Exit; End Else If Index < 0 Then Inc(Index); P := GetCommandLineW; If P <> nil Then While P^ <> #0 do Begin While (P^ <> #0) and (P^ <= ' ') do Inc(P); P2 := P; i := 0; B := False; While (P2^ <> #0) and ((P2^ > ' ') or B) do Begin If P2^ <> '"' Then Inc(i) Else B := not B; Inc(P2); End; If (Index = 0) and (P <> P2) Then Begin SetLength(Result, i); i := 1; Repeat If P^ <> '"' Then Begin Result[i] := P^; Inc(i); End; Inc(P); Until P >= P2; Exit; End; P := P2; Dec(Index); End; Result := ''; End; Und hier noch die weiteren Funktionsdefinitionen, falls diese fehlen sollten. Allerdings kann man diese vermutlich schon in der Windows-Unis von Delphi finden.
Delphi-Quellcode:
Const Kernel = 'kernel32.dll';
Function GetModuleFileNameA(Module: THandle; Buffer: PAnsiChar; BufferSize: LongInt): LongInt; StdCall; External Kernel Name 'GetModuleFileNameA'; Function GetModuleFileNameW(Module: THandle; Buffer: PWideChar; BufferSize: LongInt): LongInt; StdCall; External Kernel Name 'GetModuleFileNameW'; Function GetCommandLineA: PAnsiChar; StdCall; External Kernel Name 'GetCommandLineA'; Function GetCommandLineW: PWideChar; StdCall; External Kernel Name 'GetCommandLineW'; Natürlich auch in himi's ![]() |
Re: [Unicode/NT] Argumente eines Programms holen ...
Zitat:
Zitat:
Zitat:
Die Funktionen sind übrigens gut gelungen :thumb: |
DP-Maintenance
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Windows API / MS.NET Framework API" verschoben.
Befindet sich nun ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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