String --> PChar

Tags:    delphi

Jeg sidder med et lille problem...

Jeg ønsker at åbne eksterne programmer, http-adresser o.l.
Til dette formål benytter jeg følgende linie, efter at have tilført "ShellApi" til "Uses":

ShellExecute(Handle, 'open', 'www.udvikleren.dk', '', nil, SW_SHOWNORMAL);

Denne åbner www.udvikleren.dk. i stedet ønsker jeg at denne adresse skal være variabel. Altså at man f.eks. kan indskrive en adresse i en textbox, og så bruge denne i linien.

Dette kræver at man laver string'et fra textboxen om til et PChar:

Jeg har set i bogen "Delphi4 programmering" (ældre, ved det godt), hvor processen beskrives sådan her:

var
PCh: PChar;
S: string;

begin
S:= edit1.text; (Hvis vi siger at "edit1" er textboxen)
StrPCopy(PCh, S);
//Her imellem benyttes variablen "PCh" til indsættelse i ShellExecut-linien.
StrDispose(PCh);
end;

Bruger jeg denne metode, kommer programmet ud med en fejlmeddellelse. Noget med "Access Violence"- et eller andet...

Er der nogen der kan hjælpe...

- Brian




1 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Jeg sidder med et lille problem...

Jeg ønsker at åbne eksterne programmer, http-adresser o.l.
Til dette formål benytter jeg følgende linie, efter at have tilført "ShellApi" til "Uses":

ShellExecute(Handle, 'open', 'www.udvikleren.dk', '', nil, SW_SHOWNORMAL);

Denne åbner www.udvikleren.dk. i stedet ønsker jeg at denne adresse skal være variabel. Altså at man f.eks. kan indskrive en adresse i en textbox, og så bruge denne i linien.

Dette kræver at man laver string'et fra textboxen om til et PChar:

<snip>


Du kan bare typecaste din string til at være af typen PChar. Din kode kommer så til at se således ud:

<pre>
ShellExecute(Handle, 'open', PChar(Edit1.Text), '', nil, SW_SHOWNORMAL);
</pre>



t