| Autor |
Beitrag |
unrealer
Hält's aus hier
Beiträge: 11
Windows Vista
Delphi 2005 Prof
|
Verfasst: So 12.10.08 17:48
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
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: 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!
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
unrealer 
Hält's aus hier
Beiträge: 11
Windows Vista
Delphi 2005 Prof
|
Verfasst: 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
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: 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.
_________________ Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
|
|
>M@steR<
      
Beiträge: 288
Erhaltene Danke: 3
|
Verfasst: So 12.10.08 21:54
Zuletzt bearbeitet von >M@steR< am Di 17.09.13 02:08, insgesamt 2-mal bearbeitet
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: 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.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 12.10.08 23:16
Hier wird ansheinend wieder die Darstellung und Verabeitung durcheinander geschmissen.
|
|
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: Do 16.10.08 19:05
Ausserdem kann man führende Nullen mit Format beibehalten, siehe OH.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 16.10.08 19:23
Das ist aber schon wieder Darstellung, wie Luckie bereits sagte.
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Do 16.10.08 19:26
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: 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
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Do 16.10.08 20:06
Xentar hat folgendes geschrieben : | 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  |

|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: 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? 
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|