![]() |
StrLen() vs. Length()
Was ist eigentlich der Unterschied zwischen den o.g. Funktionen?
Guckt euch mal das "Delphi Example" zu StrLen in der Delphi-Hilfe an, da findet sich folgender u.a. Code:
Delphi-Quellcode:
Warum nicht
HalfLen := StrLen(PChar(string(Edit1.Text))) div 2;
Delphi-Quellcode:
???
HalfLen := Length(Edit1.Text) div 2;
Bisher dachte ich StrLen für PChars und Length für Strings. Laut dem Beispiel nehmen die da aber StrLen. Warum? |
Re: StrLen() vs. Length()
Zitat:
|
Re: StrLen() vs. Length()
In diesem Beispiel ist wohl die Möglichkeit mit Length() besser. Allerdings gibt Length() einen String zurück, StrLen scheinbar ein PChar. Kommt also immer drauf an, was man grade braucht (PChar oder String). Weil das Umwandeln ist ja doch noch mühsame Tipparbeit :zwinker:
|
Re: StrLen() vs. Length()
Es ist ein freche Behauptung, aber vielleicht weil String und PChar nicht das gleiche ist?!
Während nämlich ein PChar immer auf #0 endet, die Länge also die Anzahl der Zeichen bis zur #0 ist, ist ein String ein sogenannter gezählter Stringtyp. Das heißt, es gibt ein Feld welches zum String gehört, in dem die Anzahl der Zeichen im String angegeben ist. Dieses wird von Length() zurückgegeben und berücksichtigt nicht irgendwelche #0 im String. |
Re: StrLen() vs. Length()
*g* dann gibt's für StrLen keinen besseren Verwendungszweck?
Das kann ja auch mal ned sein... Irgendeine Daseinsberechtigung muss die Funktion doch haben, auch wenn diese mir momentan Rätsel aufgibt. |
Re: StrLen() vs. Length()
Zitat:
|
Re: StrLen() vs. Length()
Zitat:
StrLen ist eine Funktion, welche die Länge eines Null-terminierten Strings berechnet indem diese das erste #0 Zeichen sucht. Diese ist speziell für PChars. Strings können #0 Zeichen enthalten, daher würde letztere Funktion evtl. einen Fehler zurückliefern, wenn diese für String Variablen genutzt wird. PChars enden immer auf #0 und können somit kein #0 Character enthalten und kommen aus der C/C++ Ecke ;) ...:cat:... |
Re: StrLen() vs. Length()
Zitat:
Schlimm genug, daß dieser Unterschied zwischen PChar und String nicht Allgemeinwissen eines Delphiprogrammierers zu sein scheint. |
Re: StrLen() vs. Length()
Zitat:
Und einen Thread zum Vergleich von PChar und String gabs ja schonmal ;) |
Re: StrLen() vs. Length()
Details, habe den Link soeben wiedergefunden, finden sich unter:
![]() Im "Strings"-Tutorial. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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