Avatar billede geek Nybegynder
17. april 2000 - 22:56 Der 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;
Avatar billede erikjacobsen Ekspert
17. april 2000 - 23:24 #1
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;
Avatar billede erikjacobsen Ekspert
17. april 2000 - 23:26 #2
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?
Avatar billede geek Nybegynder
17. april 2000 - 23:31 #3
YEPZ nu virker det perfekt
tusind tak

kunne ikke få
wnetaddconnection2(resource,password,username,flags)
til at virke uden.
Avatar billede erikjacobsen Ekspert
17. april 2000 - 23:35 #4
Fint nok - det er netop til API-kald (og kun det), at PChar skal bruges.
Avatar billede lrj Nybegynder
18. april 2000 - 13:53 #5
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...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester