Autor |
Beitrag |
twister87
Hält's aus hier
Beiträge: 8
|
Verfasst: Mo 28.11.05 23:19
Hi,
ich habe diese Prozedur geschrieben, mit der der Mittelwert aus einem Memo-Feld ausgelesen werden soll.
Allerdings bekomme ich folgenden Fehler
[Fehler] Unit1.pas(56): E2250 Es gibt keine überladene Version von 'FloatToStr', die man mit diesen Argumenten aufrufen kann
[Fehler] Unit1.pas(57): E2010 Inkompatible Typen: 'string' und 'Real'
ich weiß echt nicht, woran das liegt... Könnt ihr mir helfen?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); var i,k:integer; Mittelwert,m :real; Mit: array[1..20] of integer; begin for i:=1 to 20 do begin k:=k+Mit[k] end; Mittelwert:=k/20; Mittelwert:=FloatToStr; Edit1.Text:=Mittelwert; end; |
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 28.11.05 23:24
Moin und  im Forum!
Mach das mal so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); var i,k: Integer; Mittelwert,m: Real; Mit: array[1..20] of integer; begin for i:=1 to 20 do k := k +Mit[k]; Mittelwert := k/20; Edit1.Text := FloatToStr(Mittelwert); end; |
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
twister87 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mo 28.11.05 23:29
vielen dank, das funktioniert jetzt , ABER:
Erste Zufalls-Exception bei $7C81EB33. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 00454E49 in Modul 'Project1.exe'. Lesen von Adresse 0247F22C'. Prozess Project1.exe (2816)
jetzt zeigt er diesen Fehler an.
Wenn ich doch bloß wüsste, was das alles heißen soll...
also es soll aus 20 werten der mittelwert gebildet werden...
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 28.11.05 23:40
Moin!
twister87 hat folgendes geschrieben: | Erste Zufalls-Exception bei $7C81EB33. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 00454E49 in Modul 'Project1.exe'. Lesen von Adresse 0247F22C'. Prozess Project1.exe (2816)
jetzt zeigt er diesen Fehler an. |
Nur diese Fehlermeldung sagt natürlich herzlich wenig...  bei welchem Befehl wird denn die Exception ausgelöst? Und wie sieht der Code drum rum aus?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
twister87 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mo 28.11.05 23:44
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 28.11.05 23:48
Moin!
Hmm, ich suche nicht die Fehler für dich, ich gebe dir höchstens ein paar Tipps...  Du darfst dich auch ruhig ein bischen anstrengen.
Wo wird denn nun die Exception ausgelöst, sprich, wo steht der Cursor, wenn du das Exception-Fenster wegklickst?
cu
Narses
PS: Dein Code enthält noch zwei entscheidende Fehler; aber du sollst auch ein bischen was zur Lösung beitragen, nicht nur hier den Code hinklatschen nach dem Motto "dann seht mal zu, wie ihr meinen Code ans laufen kriegt"... 
_________________ There are 10 types of people - those who understand binary and those who don´t.
Zuletzt bearbeitet von Narses am Di 29.11.05 00:01, insgesamt 1-mal bearbeitet
|
|
twister87 
Hält's aus hier
Beiträge: 8
|
Verfasst: Di 29.11.05 00:01
ich streng mich ja an
ich hab halt nur keine ahnung
auf jeden fall hält die prozedur dann bei dem k:=k+Mit[k] an
dass du den fehler nicht für mich suchen sollst, ist mir aber auch klar... 
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 29.11.05 00:03
Moin!
twister87 hat folgendes geschrieben: | ich hab halt nur keine ahnung  |
Das soll niemandes Schaden sein.
twister87 hat folgendes geschrieben: | auf jeden fall hält die prozedur dann bei dem k:=k+Mit[k] an |
Na fein, da haben wir doch schon mal was. Also ist hier (höchstwahrscheinlich) was falsch. Beschreib doch mal mit deinen eigenen Worten was da passieren soll.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
twister87 
Hält's aus hier
Beiträge: 8
|
Verfasst: Di 29.11.05 00:08
eigentlich sollen da nur die 20 werte aus dem memo-feld addiert werden...
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 29.11.05 00:11
Moin!
twister87 hat folgendes geschrieben: | eigentlich sollen da nur die 20 werte aus dem memo-feld addiert werden... |
OK  gaaanz langsam; klar soll da ein Mittelwert gebildet werden. Da es aber in Delphi nun mal keine Befehl für das Mittelwertbilden gibt, werden wir da schon selbst was "bauen" müssen.
Nochmal die Zeile:
Delphi-Quelltext
Diese kann man in drei wichtige Teile zerlegen:
a) k :=
b) k
c) +Mit[k]
Was passiert hier in den einzelnen Abschnitten denn ganz genau?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
twister87 
Hält's aus hier
Beiträge: 8
|
Verfasst: Di 29.11.05 00:19
Narses hat folgendes geschrieben: | Moin!
twister87 hat folgendes geschrieben: | eigentlich sollen da nur die 20 werte aus dem memo-feld addiert werden... |
OK gaaanz langsam; klar soll da ein Mittelwert gebildet werden. Da es aber in Delphi nun mal keine Befehl für das Mittelwertbilden gibt, werden wir da schon selbst was "bauen" müssen.
Nochmal die Zeile:
Delphi-Quelltext
Diese kann man in drei wichtige Teile zerlegen:
a) k :=
b) k
c) +Mit[k]
Was passiert hier in den einzelnen Abschnitten denn ganz genau?
cu
Narses |
also noch kürzer...
ich hab das jetzt so geschrieben:
k:=k+Mit[i]
dabei ist k ja zuerst 0,oder?
dazu wird jetzt der erste wert aus demm memo-feld addiert... Dies passiert 20 Mal, bis alle Werte zusammengerechnet sind.
Das funktioniert jetzt denke ich auch, nur, dass ich als ergebnis jetzt immer 2444753,45 rausbekomme...
kA wodran das liegt
außerdem bekomme ich folgende warnung:
[Warnung] Unit1.pas(54): W1036 Variable 'k' ist möglicherweise nicht initialisiert worden
leider muss ich jetzt schlafen gehen, bin aber morgen wieder da
cu
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 29.11.05 00:23
Moin!
twister87 hat folgendes geschrieben: |
ich hab das jetzt so geschrieben:
k:=k+Mit[i] |
Na wunderbar, 1. Fehler gefunden.  Und auch noch praktisch alleine.
twister87 hat folgendes geschrieben: | dabei ist k ja zuerst 0,oder? |
Wer sagt das?! Im Gegenteil:
twister87 hat folgendes geschrieben: | außerdem bekomme ich folgende warnung:
[Warnung] Unit1.pas(54): W1036 Variable 'k' ist möglicherweise nicht initialisiert worden |
Und da ist auch schon Fehler Nummer 2! Der Compiler sagt´s doch schon, du hast k nicht initialisiert, da fehlt also noch ein k := 0; vor der Schleife.
Allerdings, wenn dein Code Werte aus einem Memo addieren soll, dann fehlt aber noch der Code, der die Zahlen aus dem Memo in das Feld Mit[] überträgt; das ist dir schon klar, ja?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
twister87 
Hält's aus hier
Beiträge: 8
|
Verfasst: Di 29.11.05 09:41
ich dachte mir schon, dass da noch was fehlt...
ich wusste nur nicht was
wie genau lasse ich ihn denn die werte auf Mit[] übertragen???
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 29.11.05 12:18
Moin!
Das Mittelwert-Problem ist ja nun gelöst; dann markiere diesen Thread bitte als gelöst. Danke.
twister87 hat folgendes geschrieben: | wie genau lasse ich ihn denn die werte auf Mit[] übertragen??? |
Andere Frage, anderer Thread. (Forumsregeln!)
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
twister87 
Hält's aus hier
Beiträge: 8
|
Verfasst: Di 29.11.05 16:49
vielen dank nochmal für deine hilfe...
das mit dem übertragen hab ich heute in der shcule gemacht, ist also auch gelöst
twister
|
|