Autor Thema: Leerzeichen löschen aus String  (Gelesen 13345 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

m-obi

  • Gast
Leerzeichen löschen aus String
« am: 24. Januar 2011, 11:52:32 »
Hallo,

ich bekomme von SMS_RECEIVE eine SMS als String. In der stehen eigentlich 5 Zeichen, aber LEN zeigt mir 80 an. Also so viel wie maximal der String haben kann. Wie bekomme ich jetzt die restlichen 75 Stellen weg? Mit LEFT hab ichs schon probiert, ich könnte einfach 5 hinschreiben, aber die Anzahl schwankt immer.

Offline peewit

  • Moderator
  • *****
  • Beiträge: 2 378
    • Profil anzeigen
Re:Leerzeichen löschen aus String
« Antwort #1 am: 24. Januar 2011, 20:48:24 »
1. viel spass mit der ILC 150 GSM/GPRS

2. das mit den vielen leerzeichen hört sich merkwürdig an
   hast du aufgepasst das der baustein eigentlich ein array of string benötigt ?
   also 2 x 80 zeichen
   hast du hier evntuell etwas falsch gemacht

3. ich nehme an du willst nur die leerzeichen ganz links bzw. alle leerzeichen am ende entfernen
und zwischen dem ersten und letzten buchstaben sollen alle leerzeichen drinnen bleiben

4. dann nimmst du einfach den baustein "TRIME" der oscat-bibliothek
« Letzte Änderung: 25. Januar 2011, 08:30:39 von peewit »

m-obi

  • Gast
Re:Leerzeichen löschen aus String
« Antwort #2 am: 25. Januar 2011, 12:25:09 »
1. Danke, den hab ich. Ist echt nen super Teil.

2. Hab ich alles richtig gemacht.

3. + 4. Hab mir jetzt nen Baustein gebastelt, klappt super.


Danke nochmal!

m-obi

  • Gast
Re:Leerzeichen löschen aus String
« Antwort #3 am: 26. Januar 2011, 08:45:35 »
Hmm, klappt doch nicht, hatte es an einem Teststring getestet, da hat es auch geklappt. Nur es geht nicht mit dem String den ich bekomme von SMS_RECEIVE. Kann es sein das er die fehlenden Stellen mit anderen Steuerzeichen auffüllt?

Offline peewit

  • Moderator
  • *****
  • Beiträge: 2 378
    • Profil anzeigen
Re:Leerzeichen löschen aus String
« Antwort #4 am: 26. Januar 2011, 12:55:17 »
das ganze hört sich nicht logisch an !

leider beschreibst du nicht wie sieht dein string aus, und was bekommst du als ergebnis nach der TRIME function


stelle mal dein programm online, und mache eine bildschirmhardcopy von deinen online-werten

das du vom sms_receive einen mit leerzeichen gefüllten string bekommst, ist auf jeden fall nicht normal, und fraglich ob das wirklich so ist. !
da müsste schon der absender das so bescheuert versenden, was ich aber nicht glaube

m-obi

  • Gast
Re:Leerzeichen löschen aus String
« Antwort #5 am: 27. Januar 2011, 10:16:28 »
So hab das Problem mit einem Kollegen aus dem Servie-Center von Phoenix lösen können. Aus welchen Grund auch immer wird irgendwo soweit der String mit Zeichen gefüllt bis er eine Länge von 80 Stellen hat. Aber diese Zeichen sind keine Leerzeichen, wir wissen noch nicht um welche Zeichen es sich handelt. Ich habs so gelöst. Zuerst wandel ich den String mit STRING_TO_BUF in einem Buffer um, so das ich jedes Zeichen als Byte habe, also als ASCII-Code in Hex. Dann stelle ich fest wo der String eigentlich aufhört, nämlich wenn er mir 16#00 anzeigt, das ist nämlich das Zeichen, und von dem folgen noch ganz viele bis zu 80. Stelle. Den Zählwert z.B. 5 gebe ich an BUF_TO_STRING als BUF_CNT und den erstellten Buffer an BUFFER weiter und bekomme dann einen String mit 5 Zeichen. Tada!

Und hier die Verwendung des 16#00 (Null-Zeichen) laut Wikipedia:
"Das Nullzeichen kann auf Speichermedien als Füllzeichen verwendet werden, beispielsweise um unbelegten Speicherplatz zu füllen. In einigen Übertragungsprotokollen wird es als zeitliches Füllsignal verwendet, das nach Belieben in eine Nachricht eingefügt werden kann und vom Empfänger verworfen wird. Damit werden bei synchroner Datenübertragung Verzögerungen auf der Senderseite überbrückt, ohne die eigentlichen Nutzdaten zu beeinflussen.

In einigen Programmiersprachen, beispielsweise C, wird das Nullzeichen als Markierung für das Ende einer Zeichenkette verwendet. Da es in normalen Texteditoren nicht direkt eingebbar ist, wird es im Quelltext durch die Escape-Sequenz „\0“ (umgekehrter Schrägstrich gefolgt von Ziffer 0) oder hexadezimal als 0x00 dargestellt."

Jetzt klingts logisch und leuchtet ein.
« Letzte Änderung: 27. Januar 2011, 10:20:02 von m-obi »

Offline peewit

  • Moderator
  • *****
  • Beiträge: 2 378
    • Profil anzeigen
Re:Leerzeichen löschen aus String
« Antwort #6 am: 27. Januar 2011, 10:43:18 »
gut, wenn der sms-sender den string so anfüllt, dann erklärt sich dein problem

habe noch eine andere lösung

x := BYTE_TO_STRING(BYTE#00,'%c'); (* erzeugt einen string mit einen /0 im string*)
SMS_TEXT_NEU := DEL_CHARS(SMS_TEXT, x); löscht alle /0 aus dem string


oder wenn du alle zeichen kennst du kommen werden, dann kannst du genau umgekehrt arbeiten
dann werden alle zeichen die nicht aufgelistet sind automatisch entfernt
Baustein "CLEAN"

SMS_TEXT_NEU := CLEAN(SMS_TEXT, '0123456789')  (* hier werden alle zeichen gefiltert die keine ziffern sind *)

letztere variante ist die beste, da sie sehr einfach ist !!

gruss peewit

m-obi

  • Gast
Re:Leerzeichen löschen aus String
« Antwort #7 am: 27. Januar 2011, 10:48:55 »
Ich weiß ja auch das das Nullzeichen kommt, und sonst kommen alle Buchstaben, Zahlen und Sonderzeichen. Also achte ich aufs Nullzeichen. Das ist noch einfacher.

Übrigens Nullzeichen ist \0 nicht /0. ;)

Offline peewit

  • Moderator
  • *****
  • Beiträge: 2 378
    • Profil anzeigen
Re:Leerzeichen löschen aus String
« Antwort #8 am: 27. Januar 2011, 11:05:50 »
hallo

eine lösung mit standard-functionen !!!

x := BYTE_TO_STRING(BYTE#00,'%c');          (* erzeugt einen string mit einen \0                     *)
pos := FIND(sms_text,x);                            (* bestimmt die position des ersten \0 in sms_text *)
sms_text_neu := LEFT(sms_text,pos);           (* übernimmt alle zeichen links vom ersten \0        *)


fertig !!!

m-obi

  • Gast
Re:Leerzeichen löschen aus String
« Antwort #9 am: 27. Januar 2011, 11:09:14 »
Hab ich auch grade vor ca. 5 Minuten herausgefunden  ;D.
Aber trotzdem Danke.

Aber bei LEFT pos - 1, da ich ja nur die 5 Zeichen haben möchte.

m-obi

  • Gast
Re:Leerzeichen löschen aus String
« Antwort #10 am: 27. Januar 2011, 11:16:05 »
OT: Kann es sein das die Forumsuhr 7 Minuten vorgeht? Bei mir ist es 11.09 Uhr

Offline peewit

  • Moderator
  • *****
  • Beiträge: 2 378
    • Profil anzeigen
Re:Leerzeichen löschen aus String
« Antwort #11 am: 27. Januar 2011, 11:25:15 »
Hab ich auch grade vor ca. 5 Minuten herausgefunden  ;D.
Aber trotzdem Danke.

Aber bei LEFT pos - 1, da ich ja nur die 5 Zeichen haben möchte.


gut das du mitdenkst !