Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - ergebnisse zusammen addieren und in string einfügen


crossit - So 13.12.09 22:13
Titel: ergebnisse zusammen addieren und in string einfügen
hallo delpier,
habe folgendes problem unzwar habe ich mehrere rechen aufgaben hintereinander die in ein endergebnis zusammen gefassst werden sollen jedoch finde ich den richtigen code dafür nicht

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
   zahl3 := strtoint(l55.Text);
   zahl4 := strtoint(l70.Text);
   zahl5 := strtoint(l80.Text);
   ergebnis1:= zahl1+zahl2+zahl3+zahl4+zahl5;
   zahl3 := strtoint(255.Text);
   zahl4 := strtoint(l270.Text);
   zahl5 := strtoint(l380.Text);
   ergebnis2:= zahl1+zahl2+zahl3+zahl4+zahl5;

endergebis:= ergebnis+ ....+ergebnis6 ;
liste.add('gesammtergebnis lauten ' + endergebnis);

dies ist eine verkleinerte variante von der rechnung zeigt aber glaube ich was ich meine.
dachte mir das geht so jedoch funz das nicht


platzwart - So 13.12.09 22:31


Delphi-Quelltext
1:
liste.add('gesammtergebnis lauten ' + IntToStr(endergebnis));                    



Wenn du einen Text ausgibst, musst du die Zahl in einen Text umwandeln. An dieser Stelle wäre links vom "+" ein String und rechts davon eine Zahl. Dann weiß der Compiler nicht, ob es sich um eine Addition von Zahlen handelt oder um ein Zusammenfügen von Texten.

Und was meinst du mit 255.Text??


crossit - So 13.12.09 22:39

was meinst du damit? kann mir darunter irgendwie nichts vorstellen tut mir leid .

mit 255.text ist nur eine edit feld gemeint


platzwart - So 13.12.09 22:42

Worunter kannst du dir nichts vorstellen?

Zahlen als Objektnamen sind nicht erlaubt. Wähle sowas wie Zahl1, Zahl2...


crossit - So 13.12.09 22:51

user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
liste.add('gesammtergebnis lauten ' + IntToStr(endergebnis));                    

Wenn du einen Text ausgibst, musst du die Zahl in einen Text umwandeln. An dieser Stelle wäre links vom "+" ein String und rechts davon eine Zahl. Dann weiß der Compiler nicht, ob es sich um eine Addition von Zahlen handelt oder um ein Zusammenfügen von Texten.


dadrunter kann ich mir nichts vorstellen

die zahlen sollten hier im editfeld namen nur ein beispiel sein heißen natürlich anders ;)


platzwart - So 13.12.09 22:55

Und was ist nun ganz konkret das Problem?!?!?


crossit - So 13.12.09 22:57

mein problem ist das sofern ich den code den ich oben geschrieben habe starte ich eine fehlermeldung bekomme da endergebnis ein integer und string ist und ich diesen fehler beheben möchte


platzwart - So 13.12.09 22:59

Und ich habe dir doch die Lösung auf dem Silbertablett geliefert. Hast du dir meine Quelltextzeile mal angeschaut bzw. die mal in dein Programm eingesetzt?


crossit - So 13.12.09 23:14

tut mir leid hatte die () einfahc bei dir übersehen

Delphi-Quelltext
1:
2:
endergebis:= ergebnis+ ....+ergebnis6 ; // hier erscheint ein fehler:  'inkorpartieble typen :string + integer
liste.add('gesammtergebnis lauten ' + endergebnis);


platzwart - So 13.12.09 23:19

Du machst es einem aber auch echt nicht einfach... Wie soll man da den Fehler sehen? Wie sind die Variablen denn deklariert?


crossit - So 13.12.09 23:23

ich mache es dir mal leichter ^^ hier der dazu gehörige code aber ich wahrne vor bin noch kein delphi profi wenns ein bischen unübersichtlich ist und fehler drinn sind

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
procedure tform1.leistunskontrolle_text;
 var
  Liste : TStringlist ;
  endergebnis : string;
  zahl1, zahl2,zahl3,zahl4,zahl5,zahl6,zahl7,zahl8,zahl9,zahl10, ergebnis, ergebnis1,ergebnis2,ergebnis3,ergebnis4,ergebnis5: Integer;
begin
   zahl1 := strtoint(l1.Text);
   zahl2 := strtoint(l15.Text);
   zahl3 := strtoint(l2.Text);
   zahl4 := strtoint(l25.Text);
   zahl5 := strtoint(l3.Text);
   ergebnis:= zahl1+zahl2+zahl3+zahl4+zahl5;

  Liste:=TStringList.Create;
  Liste.Add('vorname:      '+ vorname.text);
  Liste.Add('Nachname:     '+ nachname.text);
  liste.Add('Mannschaft:   ' + mannschaft.text);
  liste.Add('hcp:          ' + handicap.text);
  Liste.Add('                    ');
  liste.Add('Datum:        ' + datum.text);
  liste.Add('Uhrzeit:      ' + uhrzeit.text);
  liste.Add('Wetter:       ' + Wetter.text);
  Liste.Add('                    ');
  Liste.Add('Leistungskontrolle' );
  Liste.Add('                    ');
  Liste.Add('1. Teil: kurzes Putten und Trouble shots               ');
  liste.add('kurze Putts');
  Liste.Add('Entfernung                       Ergebnis   ');
  Liste.Add('1,0   Meter:                    ' + L1.text+  '/' +  L1G.text );
  Liste.Add('1,5   Meter:                    ' + L15.text+  '/' +  L15G.text );
  Liste.Add('2,0   Meter:                    ' + l2.text+  '/' +  l2G.text );
  Liste.Add('2,5   Meter:                    ' + l25.text+  '/' +  l25G.text );
  Liste.Add('3,0   Meter:                    ' + l3.text+  '/' +  l3G.text );
  liste.Add('erreichte punkte:               ' + inttostr(ergebnis) + '/20');
  Liste.Add('                    ');
  liste.add('Trouble shots');
  Liste.Add('Entfernung                       Ergebnis   ');
  zahl1 := strtoint(t1.Text);
  Liste.Add(e1.text + 'meter                           ' + t1.Text+'/' + t1g.text);
  liste.Add('erreichte punkte:               '+ t1.Text +'/5');
    Liste.Add('                    ');
  Liste.Add('2. Teil: lange Putts und kurze Pitchs');
  liste.add('lange Putts:');
  Liste.Add('Entfernung                       Ergebnis   ');
  zahl1:= Strtoint (l6.text);
  zahl2:= strtoint (L12.text);
  zahl3:= strtoint (L18.text);
  ergebnis1 := zahl1+zahl2+zahl3;
  Liste.Add('6,0   Meter:                    ' + L6.text+  '/' +  L6G.text );
  Liste.Add('12,0  Meter:                    ' + L12.text+  '/' +  L12G.text );
  Liste.Add('18,0  Meter:                    ' + L18.text+  '/' +  L18G.text );
  liste.Add('erreichte punkte:               ' + inttostr(ergebnis1) + '/15');
  Liste.Add('                    ');
  liste.add('kurze Pitchs:');
  zahl1:= Strtoint (l150.text);
  zahl2:= strtoint (L20.text);
  ergebnis2 := zahl1+zahl2;
  Liste.Add('Entfernung                       Ergebnis   ');
  Liste.Add('15,0   Meter:                   ' + L150.text+  '/' +  L150G.text );
  Liste.Add('20,0   Meter:                   ' + L20.text+  '/' +  L20G.text );
  liste.Add('erreichte punkte:               ' + inttostr(ergebnis2) + '/10');
  Liste.Add('                    ');
  Liste.Add('3. Teil: lange Pitchs, Chips und Bunker');
  Liste.Add('lange Pitchs');
  Liste.Add('Entfernung                       Ergebnis   ');
   zahl1 := strtoint(l250.Text);
   zahl2 := strtoint(l40.Text);
   zahl3 := strtoint(l55.Text);
   zahl4 := strtoint(l70.Text);
   zahl5 := strtoint(l80.Text);
   ergebnis3:= zahl1+zahl2+zahl3+zahl4+zahl5;
  Liste.Add('25,0   Meter:                   ' + L250.text+  '/' +  L250G.text );
  Liste.Add('40,0   Meter:                   ' + L40.text+  '/' +  L40G.text );
  Liste.Add('55,0   Meter:                   ' + L55.text+  '/' +  L55G.text );
  Liste.Add('70,0   Meter:                   ' + L70.text+  '/' +  L70G.text );
  Liste.Add('80,0   Meter:                   ' + L80.text+  '/' +  L80G.text );
  liste.Add('erreichte punkte:               ' + inttostr(ergebnis3) + '/25');
  Liste.Add('                    ');
  Liste.Add('Chips');
  Liste.Add('Entfernung                       Ergebnis   ');
  zahl1 := strtoint(c12.Text);
  zahl2 := strtoint(c18.Text);
  ergebnis4 := zahl1+zahl2;
  Liste.Add('12,0   Meter:                   ' + C12.text+  '/' +  c12G.text );
  Liste.Add('18,0   Meter:                   ' + c18.text+  '/' +  c18G.text );
  liste.Add('erreichte punkte:               ' + inttostr(ergebnis4) + '/10');
  Liste.Add('                    ');
  Liste.Add('Bunker');
    zahl1 := strtoint(b6.Text);
  zahl2 := strtoint(b12.Text);
  zahl3:=strtoint(b18.text);
  ergebnis5 := zahl1+zahl2;
  Liste.Add('Entfernung                       Ergebnis   ');
  Liste.Add('6,0   Meter:                    ' + B6.text+  '/' +  B6G.text );
  Liste.Add('12,0   Meter:                   ' + b12.text+  '/' +  b12G.text );
  Liste.Add('18,0   Meter:                   ' + b18.text+  '/' +  b18G.text );
  liste.Add('erreichte punkte:               ' + inttostr(ergebnis5) + '/15');
  Liste.Add('_______________________________________________________________');
   endergebnis := ergebnis+ergebnis1+ergebnis2+ergebnis3+ergebnis4+ergebnis5;
liste.add('gesammtergebnis lauten ' + inttostr(endergebnis));
  Liste.SaveToFile('Leistungskontrolle_'+ datum.Text+ '.txt');
  Liste.Free;
end;


platzwart - So 13.12.09 23:33


Delphi-Quelltext
1:
endergebnis := ergebnis+ergebnis1+ergebnis2+ergebnis3+ergebnis4+ergebnis5;                    


So wie ich in meinem ersten Post geschrieben hatte: Auf der linken Seite des ":=" steht ein String, auf der rechten Seite stehen Zahlen. Du kannst einem String keine Zahl zuordnen. Daher musst du die das Ergebnis der Berechnung explizit in einen String umwandeln:


Delphi-Quelltext
1:
endergebnis := IntToStr(ergebnis+ergebnis1+ergebnis2+ergebnis3+ergebnis4+ergebnis5);                    


crossit - So 13.12.09 23:41

top danke! hat alles geklappt