Einzelnen Beitrag anzeigen

Incocnito

Registriert seit: 28. Nov 2016
217 Beiträge
 
#4

AW: TStringHelper 0-indiziert

  Alt 15. Mai 2024, 10:32
...Was hat Trim(S) denn mit dem String-Helper zu tun?
Um den Helper zu verwenden, müsstest du S.Trim verwenden....
Ja, hast ja Recht XD Ich hatte die Funktion umkopiert und dann halt keine String-Helper-Funktion mehr (weil ich den StringHelper ja nicht überschreiben wollte),
sondern nur eine "normale" Funktion gemacht, welche ich dann als "TrimX(sValue)" aufgerufen hatte.
Das hat jetzt in meinem Text für sprachliche Verwirrung gesorgt. :-S

Konkreter Quelltext und die Fehlerdetails wären hilfreich.
Der Fehler trat auf bei der Verwendung von IsNullOrWhiteSpace auf einem mir unbekanntem String.
Und ist innerhalb von "Trim" als Zugriffsverletzung aufgetreten.
Daher schaue ich gerade was das wohl für ein String (Leerstring? String mit nur einem Sonderzeichen?)
gewesen sein könnte. (Aktueller Stand: Das kann ja gar nicht!)

// EDIT:
Ach ja, weshalb das funktioniert:
Dort wird mit der passenden Compilerdirektive gearbeitet.
Delphi-Quellcode:
{$ZEROBASEDSTRINGS ON}
// wie der Name schon sagt, kann man danach auf Index 0 zugreifen
bzw.
...
Exakt: {$ZEROBASEDSTRINGS ON} - steht auch so bei der TStringHelper Implementierung.
Ok, das ist für mich schon verrückte Compiler-Magie, da er ja offenichtlich auf dem selben Speicher (der selben String-Variable) mal
mit 0 indiziert und mal mit 1 indiziert arbeiten kann. Ich hatte diese Direktive eher als
Code:
ab hier sind alle Variablen vom Typ "String" tatsächlich vom Typ "AnsiRawUnicodeWhateverSuperSpezialString"
gelesen, aber dann würde das beim Funktionsaufruf ja nicht mehr klappen.
Auf jeden Fall euch beiden schonmal besten Dank für die "Erleuchtung". Jetzt kann ich wenigstens wieder ruhig schlafen.

Liebe Grüße
Incocnito

Geändert von Incocnito (15. Mai 2024 um 10:35 Uhr)
  Mit Zitat antworten Zitat