AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler E2251 StrLen

Ein Thema von Mavarik · begonnen am 17. Okt 2011 · letzter Beitrag vom 17. Okt 2011
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#1

Fehler E2251 StrLen

  Alt 17. Okt 2011, 18:19
Hallo Zusammen...

Hab noch einen...

E2251 Doppeldeutiger überladener Aufruf von StrLen

Egal was ich Strlen übergebe...

Lol

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Fehler E2251 StrLen

  Alt 17. Okt 2011, 19:00
Und wieso kein Length()?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Fehler E2251 StrLen

  Alt 17. Okt 2011, 19:13
Und wieso kein Length()?
Um die Länge eines 0-Terminierten Strings zu ermitteln?

Gibt es da ne überladene Funktion?

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Fehler E2251 StrLen

  Alt 17. Okt 2011, 19:22
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Okt 2011 um 19:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Fehler E2251 StrLen

  Alt 17. Okt 2011, 19:48
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;
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Fehler E2251 StrLen

  Alt 17. Okt 2011, 20:39
Wo ist denn der "Persinal" Folder?

Ist das der, der immer sauber ist?

ShGetSpecialFolderPath(0,@S[1],CSIDL_Persinal,false);
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Fehler E2251 StrLen

  Alt 17. Okt 2011, 22: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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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


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 11:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz