AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi PChar, PWideChar, Array of Char und Windows API
Thema durchsuchen
Ansicht
Themen-Optionen

PChar, PWideChar, Array of Char und Windows API

Ein Thema von SyntaxXx · begonnen am 2. Mai 2015 · letzter Beitrag vom 4. Mai 2015
 
SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#1

PChar, PWideChar, Array of Char und Windows API

  Alt 2. Mai 2015, 16:16
Hallo zusammen,
ich arbeite gerade mit der Windows API.
Jetzt stoße ich dabei auf ein Problem.

Aber vorweg, ich rufe die Methode GetUserName auf.
Windows benutzt dabei folgende Variablen:
LPTSTR lpBuffer
LPDWORD lpnSize

Nach ein wenig Googlen bin ich auf einen Thread hier im Board gestoßen, indem stand, dass das passende Gegenstück von "LPTSTR" "PChar" ist.

Jetzt stellt Delphi aber eine eigene Unit bereit, die die Windows API abbildet.
Und dort wird aber statt "LPTSTR" "PWideChar" verwendet.

Die erste Frage ist, was der Unterschied von PChar und PWideChar ist. Beides sind doch Pointer mit Nullterminierung der Strings.
Da ich aber mit beiden Datentypen einen Fehler bekomme, habe ich mich ein wenig umgeschaut.

Fündig bin ich bei Delphi-Treff geworden.
Dort wird die Methode wie folgt aufgerufen:
Delphi-Quellcode:
function GetUsername: String;
var
  Buffer: array[0..255] of Char;
  Size: DWord;
begin
  Size := SizeOf(Buffer);
  if not Windows.GetUserName(Buffer, Size) then
    RaiseLastOSError; //RaiseLastWin32Error; {Bis D5};
  SetString(Result, Buffer, Size - 1);
end;
Es wird also ein Array of Char benutzt.
Und damit geht's dann auch.

Jetzt stellt sich mir die Frage, wieso?

Wenn ich statt des "Array of Char" eben "PChar" oder "PWideChar" benutze, dann ist nach dem Aufruf von "GetUserName" Buffer leer.
Nur mit dem Array of Char steht in Buffer etwas drin.


Könnt ihr mir helfen?
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz