AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language fehlerhaftes Unterprogramm zur Maximumberechnung?
Thema durchsuchen
Ansicht
Themen-Optionen

fehlerhaftes Unterprogramm zur Maximumberechnung?

Ein Thema von Technikus · begonnen am 15. Aug 2005 · letzter Beitrag vom 15. Aug 2005
Antwort Antwort
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#1

fehlerhaftes Unterprogramm zur Maximumberechnung?

  Alt 15. Aug 2005, 13:30
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:
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;
Danke im vorraus
Technikus
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: fehlerhaftes Unterprogramm zur Maximumberechnung?

  Alt 15. Aug 2005, 13:35
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. Delphi-Referenz durchsuchenIntToStr benötigt nämlich einen Integer (wie der Name ja schon sagt: Integer To String), maxwert hast du aber als Double deklariert. Das passt nicht zusammen. Benutze daher Delphi-Referenz durchsuchenFloatToStr, wenn du einen Double in einen String umwandeln willst.

//Edit1: Tippfehler
//Edit2: Suchtags
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
15. Aug 2005, 13:38
Dieses Thema wurde von "Luckie" von "Tools rund um Delphi" nach "Object-Pascal / Delphi-Language" verschoben.
Irgendwie falsche Sparte.
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#4

Re: fehlerhaftes Unterprogramm zur Maximumberechnung?

  Alt 15. Aug 2005, 13:50
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:
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;
Da erscheint bei "file of Tleistung" die Fehlermeldung:
E1025 Sprach-Feature wird nicht unterstützt: 'typisierte oder untypisierte Datei'

woran liegts hierbei?


Gruß Technikus
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: fehlerhaftes Unterprogramm zur Maximumberechnung?

  Alt 15. Aug 2005, 13:51
Zitat von Technikus:
Nun habe ich gleich noch ein weiters Problem- und das ist nicht das letzte:
Bitte halte dich an die Forenregeln und erstelle für ein neues Thema einen neuen Thread, sonst geht hier alles drunter und drüber. Danke.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: fehlerhaftes Unterprogramm zur Maximumberechnung?

  Alt 15. Aug 2005, 13:53
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.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: fehlerhaftes Unterprogramm zur Maximumberechnung?

  Alt 15. Aug 2005, 13:56
Hallo Technikus,

in deinem Code sind einige Fehler verschiedener Natur. Dieser Code hier funktioniert. Viel Spaß beim Studium.

Delphi-Quellcode:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#8

Re: fehlerhaftes Unterprogramm zur Maximumberechnung?

  Alt 15. Aug 2005, 14:15
Hallo Tom,
wie sollte das "n" deiner Meinung nach verändert werden?

Gruß Technikus
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#9

Re: fehlerhaftes Unterprogramm zur Maximumberechnung?

  Alt 15. Aug 2005, 14:17
Na du brauchst den Parameter gar nicht. Einfach das n in der Funktion deklarieren, dann kannst dus dir beim Aufruf sparen.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz