Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Bei StrToInt vorangestellte Nullen beibehalten
unrealer - So 12.10.08 17:48
Titel: Bei StrToInt vorangestellte Nullen beibehalten
Servus alle zusammen,
Ich hab folgendes Problem: Ich möchte mit Hilfe von StrToInt einen String zu Integer umwandeln. Leider ist jedoch in diesem String eine vorangestellte Null, die ich jedoch UNBEDINGT beibehalten muss (z.B 01 oder 001 usw.)
Kann mir jemand helfen ??
THX
Delete - So 12.10.08 17:55
Hm? Ein Integer ist ein Integer, d.h. eine führende Null zählt nicht: 010 = 10. Du könntest höchstens die Ausgabe der Zahl formatieren.
Timosch - So 12.10.08 17:56
Wie soll das denn gehen? Schließlich ist 01 und 1 das selbe. Intern wird eine 2 als 10b gespeichert; wie soll man da vorangestellte Nullen mitspeichern. Andersrum gehts natürlich: Bei einem IntToStr kannst du danach natürlich Nullen vorneran stellen. Deine Frage lässt auf ein schlecht durchdachtes Programm schließen. Sag mal, was du vorhast!
unrealer - So 12.10.08 21:45
Aaaalso, es geht darum: ich möchte mit Hilfe eines Servoboards handelsübliche Servos steuern. Hierzu muss ich ein High Bit angeben (das wäre dann z.b bei der Zahl 254 die 2) und eben die Lowbits (im vorhin genannten Beispiel die 54). Das ganze möchte ich mit Hilfe einer normalen Trackbar machen. Wäre super, wenn einer von euch ne Lösung parat hätte ;)
Dunkel - So 12.10.08 21:53
Belasse einfach Deinen String und schneide die benötigten Ziffern via Copy(); aus dem String. Das Ergebnis kannst Du dann einfach zu einem Integer machen. Wenn sich die lo- und hi-Bits immer an der selben Stelle im String befinden, sollte das ganz gut gehen.
>M@steR< - So 12.10.08 21:54
Gelöscht
Yogu - So 12.10.08 21:57
High- und Low-Bytes macht man in der Regel so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var FullWord: Word; LowByte, HighByte: Byte; begin LowByte := FullWord and $00FF; HighByte := (FullWord and $FF00) shr 2 FullWord := LowByte + HighByte * $100; end; |
Du wandelst einfach den gesamten Wert
TrackBar.Position in ein
Word um (
FullWord), das du dann wie oben genannt aufspaltest. Da ist gar nichts von führenden Nullen oder so zu sehen - du teilst einfach ein Word - ein doppeltes Byte - in zwei einzelne Bytes auf.
Delete - So 12.10.08 23:16
Hier wird ansheinend wieder die Darstellung und Verabeitung durcheinander geschmissen.
Boldar - Do 16.10.08 19:05
Ausserdem kann man führende Nullen mit Format beibehalten, siehe OH.
Delete - Do 16.10.08 19:23
Das ist aber schon wieder Darstellung, wie Luckie bereits sagte.
Xentar - Do 16.10.08 19:26
Yogu hat folgendes geschrieben : |
High- und Low-Bytes macht man in der Regel so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| var FullWord: Word; LowByte, HighByte: Byte; begin LowByte := FullWord and $00FF; HighByte := (FullWord and $FF00) shr 2 FullWord := LowByte + HighByte * $100; end; |
Du wandelst einfach den gesamten Wert TrackBar.Position in ein Word um (FullWord), das du dann wie oben genannt aufspaltest. Da ist gar nichts von führenden Nullen oder so zu sehen - du teilst einfach ein Word - ein doppeltes Byte - in zwei einzelne Bytes auf. |
Man kann auch einfach Hi() und lo() verwenden ;)
Boldar - Do 16.10.08 19:27
DeddyH hat folgendes geschrieben : |
| Das ist aber schon wieder Darstellung, wie Luckie bereits sagte. |
Naja, ich habe halt nur auf die ursprüngliche Frage geantwortet.
Yogu - Do 16.10.08 20:06
:autsch:
Hidden - Do 16.10.08 21:30
| TD06 Hilfe hat folgendes geschrieben: |
| Note: Hi treats Integer as a 16-bit value, even if it is 32-bit. |
d.h. Bit 1 oder 3? :P
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!