![]() |
Re: StrLen() vs. Length()
Zitat:
|
Re: StrLen() vs. Length()
Zitat:
|
Re: StrLen() vs. Length()
Oh Ja, sorry, hätte ich sagen müssen: Der PChar endet mit #0#0. Das heißt, beim Versuch, den nächsten String der Liste anzuspringen, landest du auf dem zweiten #0-Zeichen und solltest die Schleife dann beenden. Funktioniert recht gut ;), wie du in den Win32-API-Tutorials von Luckie sehen würdest.
|
Re: StrLen() vs. Length()
*Heul* ... und auch dies ist kein Problem, denn es ist nur eine Aneinanderreihung von PChars. Diese Methode wird bei den Performance Countern und überall angewandt. Unter Delphi muß man dann eben über alle PChars hinwegspringen, bis man zu einem #0#0 kommt - unter C wäre dies einfach ein
Code:
Unter Delphi mußt du zum Pchar-Wert entsprechend die Länge des ersten PChars + 1 hinzuaddieren um direkt hinter der nächsten #0 zu landen. Dies muß man unter Delphi explizit tun, will heißen so "schön" wie in C sieht der Code dann nicht aus ;)
LPSTR pc;
while(lstrlen(pc)) pc++; Ach ja, REG_MULTI_SZ speichert seine Werte exakt so. Eine clevere Erfindung (obwohl dazu nicht viel gehört), wie ich meine. |
Re: StrLen() vs. Length()
Zitat:
...:cat:... |
Re: StrLen() vs. Length()
Zitat:
Annahme: pc = "Und\0Los\0\0" lstrlen(pc) == 3 => while(true) pc++ => pc == "nd\0Los\0\0" lstrlen(pc) == 2 => while(true) pc++ => pc == "d\0Los\0\0" lstrlen(pc) == 1 => while(true) pc++ => pc == "\0Los\0\0" lstrlen(pc) == 0 => while(false) => Ende. Sollte pc nicht als Array von LPSTR deklariert sein?
Code:
LPSTR *pc;
while(lstrlen(*pc)) pc++; Oder habe ich da einen Denkfehler? Dann aber begründen. |
Re: StrLen() vs. Length()
Zitat:
Allerdings ist mir nicht klar wie Borland (oder wer auch immer) auf das von mir oben genannte Beispiel kommt.... |
Re: StrLen() vs. Length()
Zitat:
@derpepe: Der Kommentar war allgemein dahingesagt. Ich gehe davon aus, daß Borland dies benutzt, um 1. StrLen() zu demonstrieren (und da will man eben keine komplizierten Sachen nehmen, die vom Thema ablenken) und 2. EDITs sowieso immer nullterminierten Text enthalten und also das Beispiel nicht unlogisch wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:04 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