AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Größter Wert aus StringGrid

Ein Thema von peetfree · begonnen am 8. Feb 2018 · letzter Beitrag vom 15. Feb 2018
Antwort Antwort
Seite 2 von 2     12
peetfree

Registriert seit: 31. Jan 2018
6 Beiträge
 
#11

AW: Größter Wert aus StringGrid

  Alt 12. Feb 2018, 12:28
Delphi-Quellcode:
If (Form3.Checkbox2.Checked=True) Then Form8.StringGrid1.Cells[1,4]:= '3';
If (Form3.Checkbox2.Checked=True) Then Form8.StringGrid1.Cells[2,4]:= '2';


 // Beginn Eintragen neuer Versuch

function GetMaxFromStringGrid():Integer;
var aRow, max:Integer ;
begin
  max:=0;
  for aRow:=0 to 6 do
    if (Form8.StringGrid1.RowHeights[aRow]>-1) then
  begin
      if (StrToFloat(Form8.StringGrid1.Cells[1, aRow]) > max) then
     max:=StrToFloat(Form8.StringGrid1.Cells[1, aRow]);
     end;

     Form8.Edit6.Text:= FloatToStr(max);
end;




//Füllen von stringgrid 1 am anfang

 If (Form8.RadioButton1.Checked= True) Then Form8.StringGrid2.Hide;

Befindet sich alles innerhalb einer button click procedure, da passieren recht viele Dinge.

Fehler 2. & 3. : Ups

Dafür kam noch dazu: Incompatible types "byte" and "extended" (analog dazu auch mit integer)
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.330 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Größter Wert aus StringGrid

  Alt 12. Feb 2018, 14:39
Delphi-Quellcode:
function GetMaxFromStringGrid():Integer;
var aRow, max:Integer ;
begin
   max:=0;
   for aRow:=0 to 6 do
     if (Form8.StringGrid1.RowHeights[aRow]>-1) then
     begin
       if (StrToInt(Form8.StringGrid1.Cells[1, aRow]) > max) then
         max:=StrToInt(Form8.StringGrid1.Cells[1, aRow]);
     end;

  Form8.Edit6.Text:= IntToStr(max);

  Result := max;
end;

procedure abcdef; // Du musst nachsehen, wie deine procedure heißt
var
  MaxWert : Integer;
begin
...
If (Form3.Checkbox2.Checked=True) Then Form8.StringGrid1.Cells[1,4]:= '3';
If (Form3.Checkbox2.Checked=True) Then Form8.StringGrid1.Cells[2,4]:= '2';


  // Beginn Eintragen neuer Versuch

MaxWert := GetMaxFromStringGrid;


//Füllen von stringgrid 1 am anfang

  If (Form8.RadioButton1.Checked= True) Then Form8.StringGrid2.Hide;
...
end;
Das jetzt mal ohne große Erläuterungen, da ich wirklich nicht weiß, wo ich anfangen soll.

Ich denke, du solltest dich mit den Grundlagen der Delphi-Programmierung auseinandersetzen, ansonsten wirst du weiteren Aufgaben erheblich mehr Probleme bekommen.
Tutorials gibt es reichlich im Internet.
Peter

Geändert von Jasocul (12. Feb 2018 um 14:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.275 Beiträge
 
Delphi 12 Athens
 
#13

AW: Größter Wert aus StringGrid

  Alt 12. Feb 2018, 16:15
Form8.RadioButton1.Checked= True ...ein NoGo. Siehe: http://www.delphipraxis.net/57121-ue...t-boolean.html
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
664 Beiträge
 
Delphi 12 Athens
 
#14

AW: Größter Wert aus StringGrid

  Alt 13. Feb 2018, 09:18
Zitat:

Befindet sich alles innerhalb einer button click procedure, da passieren recht viele Dinge.
Du kannst nicht einfach eine function mitten in eine procedure reinschreiben. Die muss davon oder dahinter stehen und dann aus deiner procedure aufgerufen werden.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.330 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Größter Wert aus StringGrid

  Alt 13. Feb 2018, 10:30
Du kannst nicht einfach eine function mitten in eine procedure reinschreiben. Die muss davon oder dahinter stehen und dann aus deiner procedure aufgerufen werden.
DAVOR! Ich möchte einen Anfänger nicht auch noch mit Forward-Deklarationen verwirren.
Peter

Geändert von Jasocul (13. Feb 2018 um 11:23 Uhr)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: Größter Wert aus StringGrid

  Alt 14. Feb 2018, 14:35
Eine einfache Funktion sollte keine Abhängigkeiten zu bestimmten globalen Formvoriablen (Form8) haben.
Benötigte Informationen sollten als Parameter übergeben werden.
Ergebnisse werden zurückgegeben, die Ausgabe gehört nicht in die Funktion zum Ermitteln des Wertes.
-> wiederverwendbar
-> testbar

Eingabewerte sind hier das Grid und welcher Bereich zu durchsuchen ist.
Rückgabewert ist der gefundene Maximalwert.
Delphi-Quellcode:
function GetMaxFromStringGrid(AGrid: TStringGrid; ARange: TRect): Integer;
var
  col, row, value: Integer;
begin
  // Ergebnis initialisieren
  Result := 0;
  for col := ARange.Left to ARange.Right do
  begin
    for row := ARange.Top to ARange.Bottom do
    begin
      // ungültigen Inhalte als "0" interpretieren und damit ignorieren
      value := StrToIntDef(AGrid.Cells[col, row], 0)
      // Wert mit bisherigem Ergebnis vergleichen, Ergebnis anpassen
      if Result < value then
        Result := value;
    end;
  end;
end;

procedure abcdef; // Du musst nachsehen, wie deine procedure heißt
var
  MaxWert : Integer;
begin
  // ...
  If (Form3.Checkbox2.Checked=True) Then Form8.StringGrid1.Cells[1,4]:= '3';
  If (Form3.Checkbox2.Checked=True) Then Form8.StringGrid1.Cells[2,4]:= '2';


  // Beginn Eintragen neuer Versuch
  
  // MaxWert für den Bereich "Spalte 1, Zeile 0" bis "Spalte 1, Zeile 6"
  MaxWert := GetMaxFromStringGrid(Form8.StringGrid1, Rect(1, 0, 1, 6));
  Form8.Edit6.Text:= IntToStr(MaxWert);

  //Füllen von stringgrid 1 am anfang

  If (Form8.RadioButton1.Checked= True) Then Form8.StringGrid2.Hide;
  //...
end;
  Mit Zitat antworten Zitat
peetfree

Registriert seit: 31. Jan 2018
6 Beiträge
 
#17

AW: Größter Wert aus StringGrid

  Alt 15. Feb 2018, 11:49
Hallo,

vielen Dank für Eure umfassende Hilfe! Es hat alles geklappt und gestern habe ich das Projekt und die Prüfung vor Ort bestanden .

Eine einfache Funktion sollte keine Abhängigkeiten zu bestimmten globalen Formvoriablen (Form8) haben.
Benötigte Informationen sollten als Parameter übergeben werden.
Ergebnisse werden zurückgegeben, die Ausgabe gehört nicht in die Funktion zum Ermitteln des Wertes.
-> wiederverwendbar
-> testbar

Eingabewerte sind hier das Grid und welcher Bereich zu durchsuchen ist.

[/delphi]
--> Das StringGrid befindet sich allerdings auf einem anderen Formular.


Das jetzt mal ohne große Erläuterungen, da ich wirklich nicht weiß, wo ich anfangen soll.

Ich denke, du solltest dich mit den Grundlagen der Delphi-Programmierung auseinandersetzen, ansonsten wirst du weiteren Aufgaben erheblich mehr Probleme bekommen.
Tutorials gibt es reichlich im Internet.
Danke, schon alleine zu sehen wie es richtig ist hat viel geholfen. Im Nachhinein ist das ja immer alles logisch

Das mit den Grundlagen stimmt sicherlicher, allerdings kann ich für kleinere Teilfächer des Studiums halt auch nich zu tief gehn, sonst bin ich noch in 10 Jahren an meinem Bachelor.


--> Nochmal Danke an alle!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:37 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