Thema: Delphi Mit PChar arbeiten

Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#16

Re: Mit PChar arbeiten

  Alt 23. Jun 2004, 17:32
Hier hast du noch ein Beispiel (dann hör ich aber auch auf, dich zu nerven) aus der Rubrik: "Es ist zwar ein PChar, aber ..." -

Die Funktion [msdn]"InternetCrackUrl"[/msdn] zerlegt einen Grafen () in seine Bestandteile; sprich: Host, Schema, usw. Die entsprechenden Membervariablen sind zwar als pchar deklariert, allerdings dienen sie hier der Ausgabe der Daten. Das heißt, die Funktion erwartet von dir, dass du einen Puffer bereitstellst, der groß genug ist.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
const
  szUrl =
    'http://www.delphipraxis.net/topic28303_profil+temp+verzeichniss.html';
var
  url : TUrlComponents;
  scheme,
  buf,
  urlpath : array[0..MAX_PATH]of char;
begin
  ZeroMemory(@url,sizeof(url));
  url.dwStructSize := sizeof(url);

  url.lpszHostName := buf;
  url.dwHostNameLength := sizeof(buf);
  url.lpszScheme := scheme;
  url.dwSchemeLength := sizeof(scheme);
  url.lpszUrlPath := urlpath;
  url.dwUrlPathLength := sizeof(urlpath);

  if(InternetCrackUrl(szUrl,length(szUrl),0,url)) then
    MessageBox(0,pchar(Format('Host: %s' + #13#10 + 'Schema: %s' + #13#10 +
    'URL: %s',[buf,scheme,urlpath])),nil,0);
end;
Wenn du denkst, dass das statische Array (0-MAX_PATH) nicht ausreicht, dann kannst du auch hier mit "pchar"-Variablen arbeiten, wobei du dann natürlich den Puffer vorher mit "GetMem" erzeugen musst. Ansonsten rumpelt´s wieder ...

So, genug jetzt.
  Mit Zitat antworten Zitat