Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Minimum Suche im StringGrid (https://www.delphipraxis.net/54319-minimum-suche-im-stringgrid.html)

Technikus 1. Okt 2005 16:31


Minimum Suche im StringGrid
 
Hallo! (Delphi2005 Prof)
ich möchte ein Unterprogramm "minimum" in einer Prozedur "Berechne" aufrufen und den Wert über ein Edit-Feld aufrufen.

Die Ausgabe klappt leider nicht. Kann mir jemand bei der Fehlersuche helfen und diesen bitte kurz erklären.
Ich übe noch.
Delphi-Quellcode:
...
type
  Tfeld= array[1..10000]of integer;

function minimum(n:integer;x:Tfeld):integer;
var
  i,min:integer;
  begin
     min:=x[1];
     for i:=2 to n do
       if x[i]< min then
          min:=x[i];
          minimum:= min
  end;

procedure TForm1.Button4_Berechne_MinClick(Sender: TObject);
var
n,i,min: integer;
x:Tfeld;

begin
  x[i]:=StrToInt(StringGrid1.Cells[1,i]);
  n:= StrToInt (Edit1_eingabe_n.Text);
  minimum(n,x);
  Edit2_ergebnis.Text:=IntToStr (x[i]);
end;
...
Ich danke euch im voraus
Technikus

alzaimar 1. Okt 2005 18:34

Re: Minimum Suche im StringGrid
 
Was willst Du denn genau machen? Die Funktion 'minimum' ist (bis auf die falsche Einrückung) ok, aber das 'berechnen'... Da ist was faul...
Erkläre bitte, was das Programm machen soll, und dann kriegen wir das schon hin.

marabu 1. Okt 2005 19:26

Re: Minimum Suche im StringGrid
 
Hallo Technikus,

sprechende Namen solltest du dir angewöhnen. Ich habe dir eine Prüfung in deine Funktion Minimum() eingebaut und die Aktion hinter dem Button4 etwas berichtigt und kommentiert.

Delphi-Quellcode:
...
type
  TFeld = array [1..10000] of integer;

function Minimum(n: integer; const x: TFeld): integer;
var
  i: integer;
begin
  if n < 1 then
    raise Exception.Create('');
  Result := x[1];
  for i := 2 to n do
    if x[i] < Result then
      Result := x[i];
end;

procedure TForm1.Button4_Berechne_MinClick(Sender: TObject);
var
  i: integer;
  x: TFeld;
begin
  // hier wolltest du bestimmt dein array initialisieren?
  // ich übertrage mal alle Werte aus der ersten Datenspalte
  for i := 1 to StringGrid1.RowCount - 1 do
    x[i] := StrToInt(StringGrid1.Cells[1,i]);

  // über Edit1_eingabe_n stellst du die Zeilen in deinem StringGrid ein?
  // i enthält jetzt aber schon den richtigen Wert durch das Hochzählen
  // i := StrToInt(Edit1_eingabe_n.Text);

  // Minimum() ist eine Funktion. Wenn du das Ergebnis nicht verwendest, verfällt es.
  Edit2_ergebnis.Text := IntToStr(Minimum(i, x));
end;
...
Grüße vom marabu

Technikus 2. Okt 2005 09:43

Re: Minimum Suche im StringGrid
 
Guten Morgen,

ich habe -dank euch- eine Lösung gefunden.
diese hat auch funktioniert.
Delphi-Quellcode:
type
  Tfeld= array[1..10000]of integer;

function minimum(n:integer;x:Tfeld):integer;
var
  i,min:integer;
  begin
     min:=x[1];
     for i:=2 to n do
       if x[i]< min then
          min:=x[i];
          minimum:= min
  end;

var
n,i,min: integer;
x:Tfeld;
procedure TForm1.Button4_Berechne_MinClick(Sender: TObject);
begin
   n:= StrToInt (Edit1_eingabe_n.Text);
   for i:=1 to n do
    x[i]:=StrToInt(StringGrid1.Cells[1,i]);
    minimum(n,x);
  Edit2_ergebnis.Text:=IntToStr (minimum(n, x))
end;
nochmal Dank an Euch, bis zum nächsten Problem,
Technikus


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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