17. april 2000 - 22:56Der er
4 kommentarer og 1 løsning
Virker ikke som exe ???
Hvorfor kan jeg ikke få følgende program til at virke andre stedder end fra delphi. Altså fra delphi virker det fint men når man generere en exe fil og køre den kommer der en "Access violation" error.
Program :
var pchr : pchar; str : string;
begin pchr := ''; str := 'Palle'; strpcopy(pchr,str); end;
Det er fordi din pointer, pchr, peger på en streng af længde 1. Kaldet af strpcopy checker ikke for længde. Du er nødt til at allokere plads til den. strpcopy overskriver faktisk det RAM der ligger ved siden af det pchr peger på. Det er et rent tilfælde, at det går godt i Delphi.
Du kan gøre 2 ting:
begin getmem(pchr,1000); //alloker plads til 999 tegn + ascii 0 strpcopy(pchr,'Palle'); end;
Jeg mente, at der nok kun er en ting at gøre, nemlig det jeg skrev. Man skal simpelthen være helt sikker på man ved man har styr på længderne hvis man vil lege med pchar. Og - iøvrigt - hvorfor vil du det, når Delphi har en string-type?
256 plejer at være en fornuftig længde på en pchar til api-kald - så deklerer evt. et
var array [0..255] of char;
Så har du i hvert fald styr på længde, og du kan så bruge den både som en string og en pchar. Desuden er det en type som windows er vældig glad for - og så skal du ikke selv frigive den igen - så snart den ryger ud af scope, tager Delphi, eller hvem det nu er, sig af den...
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.