![]() |
fehlerhaftes Unterprogramm zur Maximumberechnung?
Hallo zusammen,
ich bin Anfänger im Delphiprogrammieren und weiß an dieser Stelle nicht mehr weiter. Vielleicht kann mir jemand helfen (Delphi2005). In der folgenden Funktion soll ein Maximum berechnet werden, wobei die Werte aus einer StringGrid -Spalte geholt werden sollen. Der Aufruf soll durch ein Unterprogramm erfolgen. In der vorletzten Zeile erscheint der Fehler, dass IntToStr mit (maxwert) nichts anfangen kann. Ich finde den Fehler nicht, vielleicht kann jemand von euch helfen. Außerdem suche ich ein Buch, indem für Delphi 2005 Object Pascal beschrieben wird, welches auch für Anfänger zum Selbststudium geeignet ist.
Delphi-Quellcode:
Danke im vorraus
function TForm1.Optimum(n: integer): double;
var i:integer; max, leistung:double; begin n:= StrToInt(Edit3_Eingabe_anzahl.Text); max:=0; with StringGrid1 do for i:=1 to n do begin leistung:= StrToFloat(StringGrid1.Cells[3,i]); if leistung > max then max:= leistung; end; Result:= max; end; procedure TForm1.Button7_opt_APClick(Sender: TObject); var maxwert:double; n:integer; begin maxwert:= Optimum(n); Edit2_Optimum.Text:= IntToStr(maxwert); end; Technikus |
Re: fehlerhaftes Unterprogramm zur Maximumberechnung?
Schau dir doch mal ganz genau die Fehlermeldung an. Du hast sie jetzt nicht explizit gepostet, es dürfte aber so etwas sein wie "Inkompatible Typen - Integer und Double", oder? Daraus könnte man folgern, daß maxwert wohl den falschen Typ hat.
![]() ![]() //Edit1: Tippfehler //Edit2: Suchtags |
DP-Maintenance
Dieses Thema wurde von "Luckie" von "Tools rund um Delphi" nach "Object-Pascal / Delphi-Language" verschoben.
Irgendwie falsche Sparte. |
Re: fehlerhaftes Unterprogramm zur Maximumberechnung?
Hallo Leddl,
ich habe es geändert und es funkioniert prima. Ich danke dir von ganzem Herzen. Nun habe ich gleich noch ein weiters Problem- und das ist nicht das letzte: Ich wollte gern die Daten in einer Datei speichern und wieder die Datei wieder einlesbar machen. Nun habe ich folgendes programmiert:
Delphi-Quellcode:
Da erscheint bei "file of Tleistung" die Fehlermeldung:
procedure TForm1.Button1_SpeichernClick(Sender: TObject);
type Tleistung = record nr:byte; Spannung, Strom, Leistung: double; end; type TDatei= file of TLeistung; var Messwert: TLeistung; i, anzahl: integer; Datei: TDatei; begin anzahl:=StrToInt(Edit3_Eingabe_anzahl.Text); AssignFile(Datei,'solarz.dat'); Rewrite(Datei); for i:= 1 to anzahl do with Messwert do begin nr:= i; Spannung:= StrToFloat(StringGrid1.Cells[1,i]); Strom:= StrToFloat (StringGrid1.Cells [2,i]); Leistung:=StrToFloat (StringGrid1.Cells [3,i]); Write (Datei,Messwert); end; CloseFile (Datei); end; E1025 Sprach-Feature wird nicht unterstützt: 'typisierte oder untypisierte Datei' woran liegts hierbei? Gruß Technikus |
Re: fehlerhaftes Unterprogramm zur Maximumberechnung?
Zitat:
|
Re: fehlerhaftes Unterprogramm zur Maximumberechnung?
Leddl hat bereits eine Behebung des Fehlers gegeben. Was mich noch interessiert, wieso überhaupt in der Optimum Methode ein Parameter n übergeben wird, wenn du intern in der Methode n aus deinem StringGrid ermittelst. :gruebel:
|
Re: fehlerhaftes Unterprogramm zur Maximumberechnung?
Hallo Technikus,
in deinem Code sind einige Fehler verschiedener Natur. Dieser Code hier funktioniert. Viel Spaß beim Studium.
Delphi-Quellcode:
Grüße vom marabu
function TCalcForm.MaxValue(sg: TStringGrid; iCol: integer): double;
var i, iRow, iRowCount: integer; d: double; begin with sg do begin iRowCount := RowCount - FixedRows; Result := 0; for i := 0 to Pred(iRowCount) do begin d := StrToFloat(Cells[iCol, FixedRows + i]); if d > Result then Result := d; end; end; end; procedure TCalcForm.MaxButtonClick(Sender: TObject); begin ShowMessage(Format('Maximum ist %.0n', [MaxValue(Grid, 3)])); end; |
Re: fehlerhaftes Unterprogramm zur Maximumberechnung?
Hallo Tom,
wie sollte das "n" deiner Meinung nach verändert werden? Gruß Technikus |
Re: fehlerhaftes Unterprogramm zur Maximumberechnung?
Na du brauchst den Parameter gar nicht. Einfach das n in der Funktion deklarieren, dann kannst dus dir beim Aufruf sparen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz