Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: Fehler E2251 StrLen

  Alt 17. Okt 2011, 23:04
ShGetSpecialFolderPath und ShortString ist vollkommen unsauber.

ShortString = immer ANSI
ShGetSpecialFolderPath = ANSI (bis D2007) und Unicode (ab D2009)
ShGetSpecialFolderPathA wäre aber immer ANSI

siehe MSDN-Library durchsuchenShGetSpecialFolderPath ... der Buffer muß mindestens MAX_PATH (260) zeichen groß sein, aber ShortString ist nur 255 Zeichen groß.
Delphi-Quellcode:
var
  S : array[0..MAX_PATH-1] of Char;
begin
  ShGetSpecialFolderPath(0, @S, CSIDL_PPERSONAL, False);
  Result := IncludeTrailingPathDelimiter(S); // oder IncludeTrailingBackslash
end;
PS: Du mußt die Länge garnicht wissen.
Delphi baut das StrLen von selber ein, wenn man ein 0-basierendes statisches Char-Array oder einen PChar an einen String (Variable oder Parameter) übergibt.
$2B or not $2B

Geändert von himitsu (17. Okt 2011 um 23:11 Uhr)
  Mit Zitat antworten Zitat