Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ? (https://www.delphipraxis.net/123979-tspinedit-und-zahlen-mit-ner-0-aufstocken-zum-senden.html)

Lightbeam 12. Nov 2008 14:25


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

Sherlock 12. Nov 2008 14:37

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

Lightbeam 12. Nov 2008 14:40

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

_frank_ 12. Nov 2008 17:23

Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
 
die 0 kannst du mittels Delphi-Referenz durchsuchenformat automatisch anfügen.

Delphi-Quellcode:
label1.caption:=format('%0.3d',[strToInt(edit1.text)]);
HTH Frank

Lightbeam 17. Nov 2008 10:34

Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
 
Zitat:

Zitat von _frank_
die 0 kannst du mittels Delphi-Referenz durchsuchenformat automatisch anfügen.

Delphi-Quellcode:
label1.caption:=format('%0.3d',[strToInt(edit1.text)]);
HTH Frank

Danke Frank das klappt ja soweit nur es wird im Label angezeigt ich benutze
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

Klaus01 17. Nov 2008 10:39

Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
 
Guten Morgen,

durch die Brust ins Auge:

Delphi-Quellcode:
spinEdit.Text:=format('%0.3d',[strToInt(spinEdit.text)]);
Grüße
Klaus

Lightbeam 17. Nov 2008 10:43

Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
 
Zitat:

Zitat von Klaus01
Guten Morgen,

durch die Brust ins Auge:

Delphi-Quellcode:
spinEdit.Text:=format('%0.3d',[strToInt(spinEdit.text)]);
Grüße
Klaus

Vielen Dank ! das war es :D komisch das ich nicht selbst draufgekommen bin -.-


Danke nochmals Klaus und Frank

Lightbeam 17. Nov 2008 13:06

Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
 
Zitat:

Zitat von Lightbeam
Zitat:

Zitat von Klaus01
Guten Morgen,

durch die Brust ins Auge:

Delphi-Quellcode:
spinEdit.Text:=format('%0.3d',[strToInt(spinEdit.text)]);
Grüße
Klaus

Vielen Dank ! das war es :D komisch das ich nicht selbst draufgekommen bin -.-


Danke nochmals Klaus und Frank

Die Freude war von Kurzer dauer Es Funktioniert nun alles so wie ich es haben will

"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 .

ChrisE 17. Nov 2008 13:35

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:
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;
Ungetestet und nur als Denkanstoß.

Gruß, Chris

@Edit: Ohne Syntax-Highl. gehts nicht immer ;-)

divBy0 17. Nov 2008 13:39

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?

Lightbeam 17. Nov 2008 13:43

Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
 
Zitat:

Zitat von divBy0
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?

nur zum senden richtig @ divBy0


@ ChrisE
ich schau es mir nochmal an bzw versuch es mal wobei das würd mich glat komplett aufn kopp stellen

divBy0 17. Nov 2008 13:47

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.

ChrisE 17. Nov 2008 13:49

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:
// 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...
@Edit: Vergessen, dass SpinEdit.Wert ja alles sein kann :wall:

Lightbeam 17. Nov 2008 14:03

Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
 
Zitat:

Zitat von divBy0
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.

ok Fehler behoben weiteres Problem ich überschreibe ja jetzt den wert mit Definiertem wert
aaaaabbbbeeeeer ich will da zB auch ne zahl eintippen was leider jetzt nicht mehr geht :D

divBy0 17. Nov 2008 14:06

Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
 
Zitat:

Zitat von Lightbeam
Zitat:

Zitat von divBy0
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.

ok Fehler behoben weiteres Problem ich überschreibe ja jetzt den wert mit Definiertem wert
aaaaabbbbeeeeer ich will da zB auch ne zahl eintippen was leider jetzt nicht mehr geht :D

:wiejetzt: Versteh ich nicht.

Lightbeam 17. Nov 2008 14:11

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;

divBy0 17. Nov 2008 14:18

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.

Lightbeam 17. Nov 2008 14:37

Re: TSpinEdit und Zahlen mit ner 0 aufstocken zum senden ?
 
Zitat:

Zitat von divBy0
Wenn er dann "000" sendet, kann der eingegebene String nicht in eine Ganzzahl gewandelt werden.

hab da so ein doofes gefühl das ich mir nen eigentor mit ner schleife gebaut hab :D

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

_frank_ 18. Nov 2008 01:10

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:
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;
zusätzlich kannst du natürlich auch die Pfeiltasten noch hinzufügen (keydown).

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