Autor Beitrag
toxicmaster
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: 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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Fr 08.04.05 21:14 
Wie wär's hiermit:

ausblenden Delphi-Quelltext
1:
2:
For I := 1 to ...
 Memo1.Lines.Add(Format('%d. Wert: %s V',[I,edwert.Text]));
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Fr 08.04.05 21:21 
Hallo,
user profile icontoxicmaster hat folgendes geschrieben:
...aber er fängt mit der nummerierung nicht mit 1 an sondern mit 9
ausblenden 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//  <<Lannes  
    ausgabe:=(char(zaehler)) + '. Wert: ' + edwert.Text + ' V';//wird 10x ausgeführt
    memo1.Lines.Add(ausgabe);
    end;//  <<Lannes
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 325

WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: Sa 09.04.05 12:47 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.FormCreate(Sender: TObject);  
begin
  Zaehler := 48// Char(48) = 0
end;

procedure TForm1.BteingabeClick(Sender: TObject);  
begin  
  Inc(Zaehler); // Nächste Nummer verwenden
  Ausgabe := (Char(Zaehler)) + '. Wert: ' + EdWert.Text + ' V';  
  Memo1.Lines.Add(ausgabe);  
end;
Holgerwa
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 325

WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
BeitragVerfasst: Sa 09.04.05 13:51 
user profile icontoxicmaster 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: Di 12.04.05 10:32 
user profile icontoxicmaster 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 94



BeitragVerfasst: Do 14.04.05 18:41 
thx das von wdbee hat funktioniert.
die anderen habe ich nicht ausprobiert.
aber trotzdem thx