Delphi-PRAXiS
Seite 2 von 2     12   

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 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 01:09 Uhr.
Seite 2 von 2     12   

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