Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - wert und ASCII Zeichenkette
toxicmaster - Fr 08.04.05 20:48
Titel: wert und ASCII Zeichenkette
hi,
ich will, wenn ich ein edit, ein memo und einen button habe, dass wenn ich in das editfeld eine zahl eintrage und den button drücke, dass das in dem memofeld steht:
1. Wert: 12 V
2. Wert: 145 V
3. Wert: 32 V
-Also die nummerierung soll mit der ASCII zeichenkette nummeriert werden.
+
-dann kommt '. Wert: '
+
-dann kommt edit1.text
+
- dann kommt ' V'
ic habe schonmal was geschrieben, aber er fängt mit der nummerierung nicht mit 1 an sondern mit 9
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var zaehler:integer; ausgabe:string;
procedure TForm1.bteingabeClick(Sender: TObject); begin
for zaehler:= 48 to 57 do ausgabe:=(char(zaehler)) + '. Wert: ' + edwert.Text + ' V'; memo1.Lines.Add(ausgabe);
end; |
delfiphan - Fr 08.04.05 21:14
Wie wär's hiermit:
Delphi-Quelltext
1: 2:
| For I := 1 to ... Memo1.Lines.Add(Format('%d. Wert: %s V',[I,edwert.Text])); |
Lannes - Fr 08.04.05 21:21
Hallo,
toxicmaster hat folgendes geschrieben: |
...aber er fängt mit der nummerierung nicht mit 1 an sondern mit 9
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var zaehler:integer; ausgabe:string;
procedure TForm1.bteingabeClick(Sender: TObject); begin for zaehler:= 48 to 57 do begin ausgabe:=(char(zaehler)) + '. Wert: ' + edwert.Text + ' V'; memo1.Lines.Add(ausgabe); end;end; | |
ausgabe:=(... wird 10 mal ausgeführt
memo1.Lines.Add nur nach Ende der Schleife >> Char(57) ist '9'
begin und end fehlt, habs eingebaut.
toxicmaster - Sa 09.04.05 07:38
aber es soll ja nicht 10 mal ausgeführt werden.
das sollen messwerte sein, die man in das edit eingibt und bei jeder eingabe soll dann halt ne neue zeile benutzt werden.Also es soll immer nur eine zeile gemacht werden. die nummerierung ist ja nur falsch
Holgerwa - Sa 09.04.05 08:26
Hallo,
dafür brauchst Du doch gar keine Schleife. Initialisiere die Variable zaehler, z.B. im OnShow-Event, und dann fügst Du beim OnClick eine einzige Zeile zum Memo hinzu:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var zaehler:integer; ausgabe:string;
procedure TForm1.FormShow(Sender: TObject); begin zaehler := 0; end;
procedure TForm1.bteingabeClick(Sender: TObject); begin inc (zaehler); ausgabe := Format ('%d. Wert: %s V', [zaehler, edwert.Text])); Memo1.Lines.Add (ausgabe); end; |
Holger
toxicmaster - Sa 09.04.05 12:17
ja ich weiß, aber ich würde gern das benutzen was ich oben habe.
aber da muss ne klitzekleine sache fehlen und dann funzt es.
das hatte ich so in der schule im unterricht.
wollte es nur zuhause nomma abschreiben habe es aber nicht mehr ganz zusammen bekommen.
wdbee - Sa 09.04.05 12:47
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.FormCreate(Sender: TObject); begin Zaehler := 48; end;
procedure TForm1.BteingabeClick(Sender: TObject); begin Inc(Zaehler); Ausgabe := (Char(Zaehler)) + '. Wert: ' + EdWert.Text + ' V'; Memo1.Lines.Add(ausgabe); end; |
Holgerwa - Sa 09.04.05 13:51
toxicmaster hat folgendes geschrieben: |
ja ich weiß, aber ich würde gern das benutzen was ich oben habe.
|
Überleg doch mal: Du möchtest EINE Zeile zum Memo hinzufügen, richtig?
Warum würdest Du dann eine Schleife 10 mal durchlaufen, nur um einer Variablen 10 mal einen anderen Wert zuzuweisen?
Danach benutzt Du doch sowieso nur die letzte Zuweisung, also die mit zaehler=57.
Vielleicht versteh ich ja nicht genau, was Du machen willst, aber die Schleife scheint mir ziemlich sinnlos.
Holger
toxicmaster - Mo 11.04.05 20:17
das ganze soll eine auflistung von spannungsmesswerten werden.
und mit jedem klick auf den button soll der neue wert in das memofeld eingetragen werden.
und es soll nicht zehnmal der gleiche wert eingetragen werden.
das mit den werten und so klappt ja aber die nummerierung am anfang bleibt immer bei neun.
ich will sozusagen die messwerte in dem memofeld dokumentieren.
delfiphan - Mo 11.04.05 21:26
Das
char(zaehler) scheint sich durchzusetzen ;). Man sollte hier aber unbedingt
Format verwenden. Ist 1. wahrscheinlich schneller und 2. ist
char(zaehler) kein guter Programmierstil. Eine "10" kannst du damit nicht mal mehr darstellen.
PS: Auch zwei
IntToStr mit + zu verknüpfen ist weder eleganter noch schneller (IntToStr ruft ja Format auf...)
Ich schlage folgendes vor:
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.Button1Click(Sender: TObject); begin with Memo1.Lines do Add(Format('%d. Wert: %s V', [Count+1, edwert.Text])); end; |
(Eine Listbox wäre aber wahrscheinlich geeigneter)
wdbee - Di 12.04.05 10:32
toxicmaster hat folgendes geschrieben: |
... aber die nummerierung am anfang bleibt immer bei neun.
|
Begreif das doch mal: Wenn du in der FOR-Schleife bis neun zählst, wird da immer neun drin stehen. Probier mal meinen Code oben und sieh dir den Unterschied an.
Ansonsten stimmt es, dass Char() schlecht ist, denn das kann nur mit einstelligen Zahlen (0 bis neun) funktionieren.
toxicmaster - Do 14.04.05 18:41
thx das von wdbee hat funktioniert.
die anderen habe ich nicht ausprobiert.
aber trotzdem thx
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!