![]() |
TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Hallo erstmal brächte ne kleine Hilfestellung da ich seit paar stunden nichts mehr wirklich finde womit ich mir selbst helfen könnte.
hab ein Problem ich benutze TSpinEdit da kann ich zB dann begrenzt von 0-255 auswählen das problem ist ich geb es über die RS232 Schnittstelle raus . Dabei wird nur die zahl übertragen zB "12" möchte aber das da ne "012" erscheint.. hoffe meine frage ist klar beschrieben ob das funktioniert mit dem genanten TSpinEdit mfg Lighty |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Zur Klärung: soll im SpinEdit "012" stehen, oder soll an RS232 "012" übertragen werden?
Sherlock |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Hallo Sherlock
Ja sollte über RS232 dan 012 übertragen werden weobei wenn ich bei Spinedit das per hand eintrage passiert das auch nur halt nicht automatisch |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
die 0 kannst du mittels
![]()
Delphi-Quellcode:
HTH Frank
label1.caption:=format('%0.3d',[strToInt(edit1.text)]);
|
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Zitat:
Spiinedit und ich brauch es so das es da drin angezeigt wird oder andere Lösung das es den Label schickt wobei das 2te eher notlösung wär mfg Lighty |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Guten Morgen,
durch die Brust ins Auge:
Delphi-Quellcode:
Grüße
spinEdit.Text:=format('%0.3d',[strToInt(spinEdit.text)]);
Klaus |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Zitat:
Danke nochmals Klaus und Frank |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Zitat:
"ABER" wenn ich nun ein wert mit hand eintragen will das heist nicht über +- buttons krieg ich nen fehler " is not a valid integer value hab schon bischen gesucht find aber mal wieder nicht hab auch einiges selbst probiert . |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Hallo,
ich würde versuchen die Darstellung von der "Übertragungseben" zu trennen. D.h.: 1. User stellt den Wert in diesem Beispiel in der SpinEdit ein. 2. In dem Ereignis (ButtonClick, SpinEditchange....) für das Senden gehst du hin und erstellst den zu übertragenden String bzw. rufst du die Methode zur Übertragung auf:
Delphi-Quellcode:
Ungetestet und nur als Denkanstoß.
procedure TForm1.UebertrageWert(AWert: Byte);
var sendStr: string; begin sendStr := ''; // Prüfung des Wertebereichs fast nicht nötig, da AWert vom Typ Byte (0..255) try // Wert holen und Formatieren sendStr := Format('%0.3d',[AWert]); // jetzt den Wert senden RS232.SendStr(sendStr); // weitere Verarbeitung // ... except MessegeDlg(Format('Ungültiger Wert "%d"'#13'Wert kann nicht übertragen werden', [AWert])); end; end; Gruß, Chris @Edit: Ohne Syntax-Highl. gehts nicht immer ;-) |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Versuchs mal mit StrToIntDef.
Aber eigentlich brauchst du die führende Null ja nur zum Senden über RS232 und nicht als Darstellung im SpinEdit, oder? |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Zitat:
@ ChrisE ich schau es mir nochmal an bzw versuch es mal wobei das würd mich glat komplett aufn kopp stellen |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Das Problem ist, wenn du StrToInt benutzt und dann im SpinEdit keine Ganzzahl drinsteht, dann gibt halt den Fehler.
Wenn du StrToIntDef benutzt, kannst du das Abfangen. |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Hallo Lightbeam
aber ich hab dir mit dem Quelltext genau das gegeben was divBy0 gesagt hat. Nur beim Senden ist es wichtig das die "0" vorne steht und nicht im UserInterface (also Deiner SpinEdit). Genau das macht der Quelltext :-) Gruß, Chris P.S.: Der Aufruf der Methode könnte dann so aussehen:
Delphi-Quellcode:
@Edit: Vergessen, dass SpinEdit.Wert ja alles sein kann :wall:
// in der Ereignisbehandlungsroutine für das Senden
try SendWert := StrToInt(SpinEdit.Wert); except SendWert := -1; // als Marker das was schief ging end; if (SendWert >= 0) and (SendWert<=255) then begin UebertrageWert(SendWert); end else begin // User Informieren das das so nicht geht :-) end; // und alles andere was so nötig ist in dieser Methode... |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Zitat:
aaaaabbbbeeeeer ich will da zB auch ne zahl eintippen was leider jetzt nicht mehr geht :D |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Zitat:
|
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Ich hab zB ein SpinEdit wert mit Pfeiltasten bzw + - eingestellt von mir Festeingestellten wert von 0-900
nun stell ich zb 50 ein der soll halt 050 übertragen das tut er auch wenn ichs mit + - tasten einstelle durch den def wert umgehe ich zwar den fehler nun schreit er mir aber dauerhaft ne 000 <-- mein def wert wenn ich es mit zahlen in spinedit eintippen will das heist nicht über die + - Tasten
Delphi-Quellcode:
procedure TForm1.testChange(Sender: TObject);
begin Test.Text:=format('%0.3d',[strToIntDef(Test.text,000)]); end; |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Wenn er dann "000" sendet, kann der eingegebene String nicht in eine Ganzzahl gewandelt werden.
|
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
Zitat:
das 000 steht ja dazu da def wert einzutragen fals keine Gültige zahl da ist da er aber nachm ersten zahl druck schon die zeile ausfüllt klappt das nicht oO |
Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
kleiner tipp am rande...nehm lieber ein Tedit und ein TUpDown, da Spinedit unter späteren Delphi-versionen nicht mehr zur verfügung seht.
ansonsten würde ich das so in etwa machen (funktioniert bei mir,solange updown1.associate nicht auf das editfeld gesetzt ist):
Delphi-Quellcode:
zusätzlich kannst du natürlich auch die Pfeiltasten noch hinzufügen (keydown).
procedure TForm1.UpDown1Change;
begin edit1.text:=format('%0.3d',[updown1.position]); end; procedure TForm1.UpDown1Changing(Sender: TObject; var AllowChange: Boolean); begin updown1change; end; procedure TForm1.Edit1Change(Sender: TObject); begin updown1.Position:=strToIntDef(edit1.text,000) end; procedure TForm1.Edit1Exit(Sender: TObject); begin updown1change; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key='+' then begin updown1.Position:=updown1.Position+1; updown1change; key:=#0; end else if key='-' then begin updown1.Position:=updown1.Position-1; updown1change; key:=#0; end; end; HTH Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz