Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Fehler E2251 StrLen (https://www.delphipraxis.net/163815-fehler-e2251-strlen.html)

Mavarik 17. Okt 2011 18:19

Fehler E2251 StrLen
 
Hallo Zusammen...

Hab noch einen...

E2251 Doppeldeutiger überladener Aufruf von StrLen

Egal was ich Strlen übergebe...

Lol

Mavarik

Bernhard Geyer 17. Okt 2011 19:00

AW: Fehler E2251 StrLen
 
Und wieso kein Length()?

Mavarik 17. Okt 2011 19:13

AW: Fehler E2251 StrLen
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1130921)
Und wieso kein Length()?

Um die Länge eines 0-Terminierten Strings zu ermitteln?

Gibt es da ne überladene Funktion?

Mavarik

himitsu 17. Okt 2011 19:22

AW: Fehler E2251 StrLen
 
Length liest die Längenangabe der Delphitypen aus.

Zitat:

Egal was ich Strlen übergebe..
Was übergibst du denn?

Man muß PAnsiChar, PWideChar, PChar oder direkte Zeiger auf Char, AnsiChar und WideChar übergeben.

Mavarik 17. Okt 2011 19:48

AW: Fehler E2251 StrLen
 
Zitat:

Zitat von himitsu (Beitrag 1130924)
Length liest die Längenangabe der Delphitypen aus.

Zitat:

Egal was ich Strlen übergebe..
Was übergibst du denn?

Man muß PAnsiChar, PWideChar, PChar oder direkte Zeiger auf Char, AnsiChar und WideChar übergeben.

Habs jetzt Umgebaut...

Es war

Delphi-Quellcode:
var
  S : ShortString;

begin
  ShGetSpecialFolderPath(0,@S[1],CSIDL_Persinal,false);
  S[0] := AnsiChar(StrLen(@S[1]));
  S := S + '\';
  result := S;
end;

Sir Rufo 17. Okt 2011 20:39

AW: Fehler E2251 StrLen
 
Wo ist denn der "Persinal" Folder?

Ist das der, der immer sauber ist? :mrgreen:

Zitat:

Zitat von Mavarik (Beitrag 1130925)
Delphi-Quellcode:
ShGetSpecialFolderPath(0,@S[1],CSIDL_Persinal,false);


himitsu 17. Okt 2011 22:04

AW: Fehler E2251 StrLen
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 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-2025 by Thomas Breitkreuz