Seite 1 von 1

len(string$) gibt falschen Wert aus

Verfasst: 15.12.2005 14:57
von Hypersoft
Hi Leute. Ich habe da etwas merkwürdiges entdeckt. Ich versuche hier mal das Problem zu beschreiben:
Ich erhalte einen String von einem IRC-Server. Diesen lasse ich zu erst in den Arbeitsspeicher und dann in die Variable string$ schreiben. Als nächstes lasse ich mit len(string$) über den Messagerequester die Länge des Strings anzeigen. Danach lasse ich den String zeilenweise auslesen. Die Anzahl der Zeichen in jeder Zeile addiere ich zur Variable StringCounting. Nach dem der String vollständig ausgelesen ist, ist merkwürdiger Weise die Länge von string$ um einiges kleiner als die Länge von StringCounting. Einmal habe ich sogar den String aus dem MessageRequester herauskopiert und die Zeichen gezählt. Diese stimmen mit StringCounting überein. Kann mir das einer erklähren???

Verfasst: 15.12.2005 15:00
von NicTheQuick
Eigentlich müsste die Länge von StringCounting kleiner sein als [c]Len(string$)[/c],
da du ja beim Auslesen der einzelnen Zeilen wahrscheinlich nicht die
Zeilenendzeichen mitzählst, also [c]Chr(13)[/c] und [c]Chr(10)[/c], oder?

Verfasst: 15.12.2005 15:53
von Hypersoft
Das habe ich auch gedacht. Aber welche Zeichen könnten von dem befehl len() ignoriert werden? Ich sende heute Abend mal den Quellcode rüber.

Verfasst: 15.12.2005 16:00
von Kiffi
Zeilentrennzeichen (Chr(13) und Chr(10)) werden von Len() mitgezählt, sind
aber in einem Messagerequester 'unsichtbar', weil sie dort sofort 'interpretiert
werden (also an dieser Stelle bricht die Zeile um).

Also pro Zeilenumbruch musst Du 1 oder 2 Zeichen (je nach
Zeilenumbruchtyp) hinzuzählen.

Grüße ... Kiffi

Verfasst: 15.12.2005 16:26
von Hypersoft
OK, aber das kann nicht das Problem sein, da im Originalstring ja weniger Zeichen angezeigt werden, als tatsächlich vorhanden sind. Das habe ich wie gesagt von Hand nachgezählt. Es entsteht eine Differenz bei ca. 40 Zeichen, der String hat vier Zeilen. Ich möchte nochmal darauf hinweisen, dass es sich um einen String handelt, welchen ich bei der Anmeldung an irc.germany.net erhalten habe. Genauer gesagt ist es der zweite. Ich kann mir das nicht erklähren.

Verfasst: 15.12.2005 18:30
von Batze
Hast du mal alle Zeichen im Arbeitsspeicher Byteweise ausgeben lassen?

Verfasst: 15.12.2005 19:01
von Hypersoft
Das hab ich noch nicht probiert, werds aber versuchen. Es dürfte aber doch gar keinen Einfluß darauf haben, weil die Daten aus dem Arbeitsspeicher ja bereits im String enthalten sind und len(string$) weniger Zeichen anzeigt, als eigendlich drin sind.

Verfasst: 15.12.2005 23:33
von Batze
Ja, aber vielleicht siehst du dann welche Zeichen in deinem String sind und das hilft vielleicht weiter.
Das du den Beispielstring nicht postest wird ja Gründe haben, daswegen frag ich garnicht danach.

Verfasst: 15.12.2005 23:52
von Hypersoft
Das mit dem Quellcode ist so, dass das ganze sehr in ein Programm verwickelt ist und ich nicht das ganze Programm posten möchte, sondern mich auf das wesendliche konzentrieren will. Ich habe jetzt den String, welchen ich empfange, mit addgadgetitem in ein Editorfeld schreiben lassen und siehe da, plötzlich stimmt die kürzere Länge, da die Zeichen, die er im Messagerequester zu viel angezeigt hat, erst beim nächsten durchlaufen der Schleife angezeigt werden. Das klingt jetzt wohl unverständlich ohne den Code und ich hatte heute auch wenig Zeit, aber morgen poste ich das Teil mal.