| Autor |
Beitrag |
toxicmaster
      
Beiträge: 94
|
Verfasst: Fr 08.04.05 20:48
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
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: 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
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: 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.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
toxicmaster 
      
Beiträge: 94
|
Verfasst: 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
      
Beiträge: 325
WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
|
Verfasst: 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 
      
Beiträge: 94
|
Verfasst: 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
      
Beiträge: 628
Erhaltene Danke: 1
|
Verfasst: 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
      
Beiträge: 325
WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
|
Verfasst: 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 
      
Beiträge: 94
|
Verfasst: 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
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: 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
      
Beiträge: 628
Erhaltene Danke: 1
|
Verfasst: 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 
      
Beiträge: 94
|
Verfasst: Do 14.04.05 18:41
thx das von wdbee hat funktioniert.
die anderen habe ich nicht ausprobiert.
aber trotzdem thx
|
|