mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-07-07 07:35:55 +02:00
parent
93d86a60e4
commit
820a9ad8e8
@ -132,16 +132,6 @@ function SysReAllocStringLen(var bstr:pointer;psz: pointer;
|
|||||||
Parameter Handling
|
Parameter Handling
|
||||||
*****************************************************************************}
|
*****************************************************************************}
|
||||||
|
|
||||||
var
|
|
||||||
ModuleName : array[0..255] of char;
|
|
||||||
|
|
||||||
function GetCommandFile:pchar;
|
|
||||||
begin
|
|
||||||
GetModuleFileName(0,@ModuleName,255);
|
|
||||||
GetCommandFile:=@ModuleName;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure setup_arguments;
|
procedure setup_arguments;
|
||||||
var
|
var
|
||||||
arglen,
|
arglen,
|
||||||
@ -150,6 +140,7 @@ var
|
|||||||
pc,arg : pchar;
|
pc,arg : pchar;
|
||||||
quote : char;
|
quote : char;
|
||||||
argvlen : longint;
|
argvlen : longint;
|
||||||
|
buf: array[0..259] of char; // need MAX_PATH bytes, not 256!
|
||||||
|
|
||||||
procedure allocarg(idx,len:longint);
|
procedure allocarg(idx,len:longint);
|
||||||
var
|
var
|
||||||
@ -175,13 +166,10 @@ begin
|
|||||||
count:=0;
|
count:=0;
|
||||||
argv:=nil;
|
argv:=nil;
|
||||||
argvlen:=0;
|
argvlen:=0;
|
||||||
pc:=getcommandfile;
|
ArgLen := GetModuleFileName(0, @buf[0], sizeof(buf));
|
||||||
Arglen:=0;
|
buf[ArgLen] := #0; // be safe
|
||||||
repeat
|
allocarg(0,arglen);
|
||||||
Inc(Arglen);
|
move(buf,argv[0]^,arglen+1);
|
||||||
until (pc[Arglen]=#0);
|
|
||||||
allocarg(count,arglen);
|
|
||||||
move(pc^,argv[count]^,arglen+1);
|
|
||||||
{ Setup cmdline variable }
|
{ Setup cmdline variable }
|
||||||
cmdline:=GetCommandLine;
|
cmdline:=GetCommandLine;
|
||||||
{ process arguments }
|
{ process arguments }
|
||||||
@ -325,11 +313,11 @@ begin
|
|||||||
{$EndIf SYSTEM_DEBUG_STARTUP}
|
{$EndIf SYSTEM_DEBUG_STARTUP}
|
||||||
inc(count);
|
inc(count);
|
||||||
end;
|
end;
|
||||||
{ get argc and create an nil entry }
|
{ get argc }
|
||||||
argc:=count;
|
argc:=count;
|
||||||
allocarg(argc,0);
|
{ free unused memory, leaving a nil entry at the end }
|
||||||
{ free unused memory }
|
sysreallocmem(argv,(count+1)*sizeof(pointer));
|
||||||
sysreallocmem(argv,(argc+1)*sizeof(pointer));
|
argv[count] := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -1149,7 +1137,7 @@ begin
|
|||||||
{ some misc Win32 stuff }
|
{ some misc Win32 stuff }
|
||||||
hprevinst:=0;
|
hprevinst:=0;
|
||||||
if not IsLibrary then
|
if not IsLibrary then
|
||||||
SysInstance:=getmodulehandle(GetCommandFile);
|
SysInstance:=getmodulehandle(nil);
|
||||||
MainInstance:=SysInstance;
|
MainInstance:=SysInstance;
|
||||||
cmdshow:=startupinfo.wshowwindow;
|
cmdshow:=startupinfo.wshowwindow;
|
||||||
{ Setup heap }
|
{ Setup heap }
|
||||||
|
Loading…
Reference in New Issue
Block a user