Noget tyder på at argv[0] er tom, sådan at der kun kommer et argument til CopyFile. Såvidt jeg husker er argv[0] exe-filen som køres (?), men jeg mener også at det er en pointer, så du skal nok bruge argv[0]^ - altså det argv[0] peger på.
Jeg er sikker på at det er argv[0], fordi hvis jeg benytter ParamStr(0) for denne fejl: Error: Incompatible type for arg no. 2: Got ANSISTRING, expected PCHAR
Jeg har prøvet disse koder: copyfile(PcHar(ParamStr(0)), 'tmp.exe'); copyfile(argv[0]^, PcHar('tmp.exe')); Da den skriver PcHar.
Jeg har lige prøvet dine koder og får disse fejl: 1) Error: Incompatible types: got "CHAR" expected "LONGINT" 2) Error: Wrong amount of parameters specified
Hvis True fejler funktionen hvis NewFile allerede eksisterer Hvis False overskrives NewFile hvis den eksisterer
dvs:
const maxchar = 128; {her sætter du max tegn (husk plads til stien)} var ToFile: string; PChIn,PChOut: PChar; OverWrite: Boolean; Begin Overwrite := True; ToFile := 'c:\temp.exe'; PChIn := StrAlloc(MaxChar); {reserverer plads til strengen} PChOut := StrAlloc(MaxChar); StrPCopy(PChIn,paramstr(0)); {Overførsel til PChar} StrPCopy(PChOut,ToFile);
Du kan også prøve at overføre manuelt til en array of char = PChar^ Husk 0-afslutningen;
var PC: array[1..128] of char;
PC := ParamStr(0)+chr(0);
CopyFile(PC,......
Hvis du ikke kan overføre direkte må du lave en løkke: for i := 1 to length(ParamStr(0)) do PC[i] := paramstr(0)[i]; PC[length(ParamStr(0)+1] := chr(0);
unclebug. Dev-Pascal er lige som Delphi(Pascal) men programmerne bliver ikke mere en 5-50 KB store. Hent det på: http://www.Bloodshed.net det fylder ca. 8 MB.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.