einstellige Zahlen zweistellig ausdrücken

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
John
Beiträge: 273
Registriert: Mo 30. Jul 2007, 19:55

einstellige Zahlen zweistellig ausdrücken

Beitrag von John »

Mal ne Frage:
Ich möchte soz. Zahlen unter 10, die also nur einstellig mit einer Null zuvor ausgeben, in ein Edit-Feld.
dachte so könnte man es machen
if zahl10 then editx.text:=inttostr(Zahl);
else if Zahl<10 then editx.text:=('0')+inttostr(Zahl);
Halte ich für sehr umständlich da es mehrere solcher Zahlen und Editfelder gibt.


John

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

da könnte dir Format helfen. Aber da musst du auch jede Zahl durchjagen.

http://lazarus-ccr.sourceforge.net/docs ... ormat.html" onclick="window.open(this.href);return false;
Johannes

John
Beiträge: 273
Registriert: Mo 30. Jul 2007, 19:55

Beitrag von John »

Wenn ich da jede Zahl durchjagen muss, dann wird das nur komplizierter für mich weil ich noch nicht wirklich mit format gearbeitet habe. Andere Idee, andere Frage: Gäbe es denn ne möglichkeit einfach den 2.Algo von mir zu nehmen und dann eine schleife schreiben in der jedes "editfeld" nacheinander angesprochen wird?


John

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Kannste machen.
Oder im OnChange Event anpassen.

John
Beiträge: 273
Registriert: Mo 30. Jul 2007, 19:55

Beitrag von John »

Und wie am schlausten?

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

John hat geschrieben:Und wie am schlausten?
Kann ich dir nicht sagen ohne zu verstehen wozu das eigentlich gut sein soll.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Wiso nimmst du nicht einfach Format('%.2d',meinevariable);
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

John
Beiträge: 273
Registriert: Mo 30. Jul 2007, 19:55

Beitrag von John »

theo hat geschrieben:
John hat geschrieben:Und wie am schlausten?
Kann ich dir nicht sagen ohne zu verstehen wozu das eigentlich gut sein soll.
Also ich will am besten mit einem Algo alle Edit felder, ohne jedes einzeln ansprechen zu müssen, ansprechen.
Christian hat geschrieben: Wiso nimmst du nicht einfach Format('%.2d',meinevariable);
Mit dem Codeschnippsel kann ich leider nichts anfangen. Entweder du erklärst ihn oder ich kann imho nix damit anfangen.

John

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Mit dem Codeschnippsel kann ich leider nichts anfangen. Entweder du erklärst ihn oder ich kann imho nix damit anfangen.
Der Formatiert dir meinevariable immer 2 stellig wie du es wolltest.
Hättest ja einfach ausprobieren können.

Was macht es bitte für einen Sinn Editfelder anzusprechen zu wollen ohne sie direkt anzusprechen ? Du kannst Editfelder nur direkt ansprechen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

John hat geschrieben: Also ich will am besten mit einem Algo alle Edit felder, ohne jedes einzeln ansprechen zu müssen, ansprechen.
Damit wiederholst du dich nur. Ich verstehe immer noch nicht was dein eigentliches Ziel ist:

Lies mal hier:
http://www.lugbz.org/documents/smart-qu ... .html#goal" onclick="window.open(this.href);return false;

John
Beiträge: 273
Registriert: Mo 30. Jul 2007, 19:55

Beitrag von John »

Naja der Sinn liegt darin, wenn du einen Array von Variablen zum beispiel hast. Da sind sagen wir 5 Variablen Drin und du möchtest alle 5 zum Ausdruch bringen aber nicht jedesmal eingeben
editx1.text:=Variable1;
Aber na gut, die frage mit dem format, wäre mit deiner antwort jetzt auch erledigt.
Ich dachte nur an eine etwas abstruse alternative zur lösungsidee. Die ich auch nicht wirklich erklären kann

John

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Da gibt's verschiedene Möglichkeiten:

- Du kannst, wie gesagt, einen gemeinsamen Eventhandler einsetzen und dann jeweils am "Sender" die "Änderungen vornehmen"
- Du kannst durch Form1.Components[]; loopen und alle TEdit ansprechen.
- Du kannst dir eine Klasse von TEdit ableiten, welche das bereits im SetText macht etc...

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Code: Alles auswählen

var
  myarray : array[0..4] of string;
 
for i := 1 to 5 do
  FindComponent('Edit'+IntToStr(i)).Text := MyArray[i-1];
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

John
Beiträge: 273
Registriert: Mo 30. Jul 2007, 19:55

Beitrag von John »

Vielen Dank!
Frage komplett beantwortet.

John

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Andere Möglichkeit wäre noch bei:

OnEnter
OnExit

für rechtsbündig mit:

TEdit(Sender).Text:= Format('%' + IntToStr(TEdit(Sender).MaxLength) + 'd', StrToInt(Trim(TEdit(Sender).Text));

linksbündig:

TEdit(Sender).Text:= Format('%d', StrToInt(Trim(TEdit(Sender).Text));

zu arbeiten.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Antworten