AGB  ·  Datenschutz  ·  Impressum  







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

StrLen / SizeOf mag Chr(0) nicht?

Ein Thema von xSkaschY · begonnen am 3. Aug 2008 · letzter Beitrag vom 4. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
xSkaschY

Registriert seit: 19. Jun 2006
Ort: Bünde
95 Beiträge
 
Delphi 2007 Professional
 
#1

StrLen / SizeOf mag Chr(0) nicht?

  Alt 3. Aug 2008, 07:35
Morgen,

versuche gerade die Länge eines Strings, welcher auch ein paar "Chr(0);" enthält ,zu ermitteln.

Egal welche kt. ich benutze StrLen / SizeOf beides gibt in meinem Fall nur 8* an

Delphi-Quellcode:
sOutput := 'armapath' + Chr(0) + sValue + Chr(0) + 'port' + Chr(0) + IntToStr(iPort) + Chr(0) + Chr(0);

// Dies ist nur ein Beispielstring der Aufbau des Orginals ist jedoch der gleiche (keyword-chr(0)-value-chr(0)-usw.-Chr(0)-Chr(0) (double chr(0) = EOL))
Also "er zählt" nur das erste Wort vor dem Chr(0).

Gibt es eine möglichkeit diese mit zu zählen?


LG Toby

//

Eine möglichkeit wäre, alle vorhandenen Wörter zu zählen und einfach die Chr(0) mit +1 zu addieren, halte dies aber für "unsauber" und nicht redunant, anything else?

//

Chr(0); ist nur ein Trenner, da ich diese Daten durch nen Socket schiebe und ich die auf der Gegenstelle weiter verarbeite habe ich mir diesen Trenner so angewöhnt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: StrLen / SizeOf mag Chr(0) nicht?

  Alt 3. Aug 2008, 08:02
Ist aber auch gleichzeitig ein Kenner für Stringende
Markus Kinzler
  Mit Zitat antworten Zitat
xSkaschY

Registriert seit: 19. Jun 2006
Ort: Bünde
95 Beiträge
 
Delphi 2007 Professional
 
#3

Re: StrLen / SizeOf mag Chr(0) nicht?

  Alt 3. Aug 2008, 08:05
Naja, dessen bin ich mir bewusst.

Beantwortet aber trotzdem nicht meine Antwort, trotzdem Danke.

LG Toby
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: StrLen / SizeOf mag Chr(0) nicht?

  Alt 3. Aug 2008, 08:07
Nimm doch einfach einen anderen Trenner
Markus Kinzler
  Mit Zitat antworten Zitat
xSkaschY

Registriert seit: 19. Jun 2006
Ort: Bünde
95 Beiträge
 
Delphi 2007 Professional
 
#5

Re: StrLen / SizeOf mag Chr(0) nicht?

  Alt 3. Aug 2008, 08:07
Welcher wäre "frei"?

//

: ; . - usw. gehen nicht, da alle Sonderzeichen möglich wären. Deshalb ja 0x00 weil man des nunmal nicht "eingeben" kann
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: StrLen / SizeOf mag Chr(0) nicht?

  Alt 3. Aug 2008, 08:16
Ein Zeichen, welches nicht in deinen Daten enthalten ist.
Markus Kinzler
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: StrLen / SizeOf mag Chr(0) nicht?

  Alt 3. Aug 2008, 08:30
Hallo,

warum eigentlich nicht Delphi-Referenz durchsuchenLength()? Das greift auf die Größe des Speicherbereichs zu und lässt sich von Nullzeichen nicht aufhalten.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: StrLen / SizeOf mag Chr(0) nicht?

  Alt 3. Aug 2008, 09:04
Hallo,

mit dem 0-Zeichen ist das so eine Sache. Eigentlich sollten Pascal-Strings alle Zeichen enthalten können, da sie ja eine Längeninformationen mit sich führen. Deshalb sollte auch die von xaromz angesprochene Funktion Length() in diesem Fall das richtige Ergebnis liefern. Allerdings würde ich mich nicht darauf verlassen, dass alle RTL-/VCL-Routinen die 0 richtig interpretieren:

Delphi-Quellcode:
var
  s : string;
  n : Integer;
  v : Double;
begin
  s := '123,456'#0'Hallo Welt';

  n := Length(s); // liefert den Wert 18
  v := StrToFloat(s); // sollte einen Fehler auslösen, tut das aber nicht...
end;
Um allen Schwierigkeiten bei möglichen Konvertierungen aus dem Weg zu gehen, würde ich also auch zu einem anderen Trenner raten. In der Wikipedia findet man mögliche Kandidaten, zum Beispiel die Zeichen 28-31.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#9

Re: StrLen / SizeOf mag Chr(0) nicht?

  Alt 3. Aug 2008, 10:14
Warum nimmst du nicht als Trenner #1 oder #7 (Beep)?? Einen Beep hab ich bis jetzt noch nicht geschafft irgendwo einzugeben, gleiches ist mir auch mit Chr(1) wiederfahren. Dabei fällt das Problem mit der 0 weg, die als Ende fungiert. Eigentlich ist das etwas komisch, dass das nicht auf anhieb funkioniert. Nach einem ähnlichen Prinzip versteht sich auch der Open- und SaveDialog von Windows, wenn man ihn nonVCL aufruft. Dort signalisiert ein einfaches #0 ein Ende und ein doppeltes #0 ein Zeilenende.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10

Re: StrLen / SizeOf mag Chr(0) nicht?

  Alt 3. Aug 2008, 10:46
Zitat von rollstuhlfahrer:
Eigentlich ist das etwas komisch, dass das nicht auf anhieb funkioniert.
Wenn er StrLen benutzt ist es kein Wunder, dass beim ersten #0 der String endet. Denn StrLen sucht ja gerade nach dem ersten #0. Und SizeOf ist die völlig falsche Funktion. Sie liefert nicht die Länge des Strings zurück.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:09 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