Autor Beitrag
Kennyblue
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 24.06.08 19:24 
Hi,

ich hab ein Programm das aus einem Dynamischen Array besteht und dann die Minimal / Maximale Zahl und den Durchschnitt ausgibt für die Schule geschrieben.

Der Lehrer will aber das wir, das mit einem record und mit Prodecuren machen. Bekomm es einfach nicht hin. Würd mich freuen wenn mir jemand helfen kann.

So sieht mein Programm bis jetzt aus leider ohne rekord und ohne Proceduren:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
var
  Form2: TForm2;
  i : integer ;
  index : integer ;
  Messwert : array of single ;

implementation

{$R *.dfm}

procedure TForm2.ButtonAufnehmenClick(Sender: TObject);
begin
SetLength(EingabeWert,10); 
Messwert[i] := StrToFloat (Edit1.Text) ;
index :=      i;
i := i+1;
end;

procedure TForm2.ButtonusgebenClick(Sender: TObject);
var
n : integer ;
a,b,max,min:single;
begin
  max :=Messwert[0];
  min :=Messwert[0];
  for n := 0 to index do
    begin
      a := a+Messwert[n];
      b := messwert[n];
       if max < b then
       max := b
       else if min < b  then
            min:=     b;

    end;
    i :=0 ;
    a := (max+min) / 2 ;
    Memo1.lines.add('Maximalwert ='+FloatToStr(max));
    Memo1.lines.add('Minimalwert ='+FloatToStr(min));
    Memo1.lines.add('Durchschnitt ='+Format ('%5.2f',[a]));

end;


end.


Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt


Zuletzt bearbeitet von Kennyblue am Di 24.06.08 19:44, insgesamt 1-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 24.06.08 19:32 
Hallo und :welcome:!

Zuerst möchte ich Dich bitten, den Titel zu ändern. Der sagt nix über das Thema aus, um das es hier geht. Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und den Titel ändern. Danke Dir!


Zu Deinem Problem: Mir ist nicht ganz klar, wo das Record und die Prozedur zum Einsatz kommen soll. Außerdem musst Du noch ein bisschen genauer werden, was Du bereits versucht hast und wo Du nicht weiter kommst. Denn: Wir helfen Dir gerne, aber nur wenn Du selber auch mitmachst!

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Kennyblue Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 24.06.08 19:53 
Also ich hab mir es so vorgestellt das ich das Einlesen der Werte in einer Procedure mache, so habe ich es ausprobiert bekomme aber Fehler und weiss nicht wie ich den wegbekomme. Also beim drücken von ButtonAufnehmen, soll die procedure Einlesen gestartet werden. Wo ist der Fehler im Bild ? :P

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure Einlesen(Messwert,i ) ;
  begin
    SetLength(EingabeWert,10);
    Messwert[i] := StrToFloat (Edit1.Text) ;
    index :=      i;
    i := i+1;
  end;
procedure TForm2.ButtonAufnehmenClick(Sender: TObject);
  begin
    Einlesen (Messwert,i);
  end;


Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 24.06.08 19:59 
Demnächst bei Fehlern auch direkt die Fehlermeldung mit angeben. In diesem Fall glaube ich, musst Du Dir erst einmal darüber klar werden, wie der Ablauf aussehen soll. Das sieht mir im Moment noch ein bisschen unüberlegtes "zusammen stoppeln" aus.

Mein Tipp, auch wenn er doof klingt: Schreib Dir in normalen Worten auf, was das programm machen soll.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Kennyblue Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 24.06.08 20:08 
Also das Programm soll beim Drücken von Button1 , die Eingegebnen Werte in ein Dynamschises Array schreiben und der Zeige soll immer +1 genommen werden damit Platz für die nächste Zahl gemacht wird.

Der Button Ausgeben soll, mit einer if Schleife den minimalen und den Maximalen Wert des Array ausgeben. Dann soll der Durchschnitt der beiden Werte ermittelt werden.

ps das programm läuft !! (was ich oben gepostet habe)

nun will ich aber , eine procedur aufrufen wenn ich den Button1 drücke.
Diese Procedur soll das machen was Button 1 bis jetzt macht.

Schwer zu erklären :P hoffe es versteht jemand..
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 24.06.08 20:10 
user profile iconKennyblue hat folgendes geschrieben:
nun will ich aber , eine procedur aufrufen wenn ich den Button1 drücke.
Diese Procedur soll das machen was Button 1 bis jetzt macht.
Okay. Und was genau sind in Deinem Programm globale Variablen und was müssen Parameter der Prozedur sein?

Wie musst Du die Prozedur deklarieren, damit sie auf Edit1 zugreifen kann - denn das gehört ja zur Form! :-) (Hier könnte auch ein Parameter helfen!)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Kennyblue Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 24.06.08 20:25 
hmm,
wenn ich das mal wüsste :P
sollte vielleicht dazu sagen das ich Delphi erst seit paar Monaten in der Schule habe.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 24.06.08 20:28 
Du hast doch Deinen Quelltext da. Da siehst Du doch zumindest schonmal, welche Variablen global sind. Die als Parameter zu übergeben macht ja dann schonmal keinen Sinn.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Mi 25.06.08 07:03 
Hi
Ohne nun alles genau durchzulesen ist mir aufgefallen, das du die Parameter der Prozedure einlesen ohne Typ angibst. Da fehlt

ausblenden Delphi-Quelltext
1:
procedure Einlesen(Messwert : Array of String ????; i: Integer ) ;					


Bei Messwert bin ich mir nicht sicher, aber wenn es ein Array ist und danach sieht es aus, solltest du einen Typ deklarieren. Außerdem, wenn du Messwert ohne Var also
ausblenden Delphi-Quelltext
1:
procedure Einlesen(Var Messwert : Array of String ????; i: Integer ) ;					

schreibst, werden deine Änderungen nicht eingetragen, da eine Procedure diese dann nicht zurückgibt.
Ist das Array Messwerte global vereinbart, solltest du dieses auch nicht als Parameter übergeben.
Über den Code hab ich mir weiter keine Gedanken gemacht, ich denke, da sind noch ein paar weitere Gedankenfehler. Daher überleg dir erst einmal, was soll die Procedure wirklich, welche Information braucht sie, um wirklich sauber zu arbeiten und gibt sie diese Information auch wieder an das Programm, oder weiß nur sie selbst von den Werten, die den Variablen zugeordnet werden.
Ein einfaches Beispiel
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Prozedure Addiere(Summe, Wert1, Wert2:Integer);
Begin
  Summe:=Wert1+Wert2;
End;

Sieht toll aus, aber im Programm wird die Summe nicht verändert, auch wenn eine globale Variable existiert.
Der Aufruf
Addiere(Summe,3,4);bringt also nix.
Anders ist:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Prozedure Addiere(Var Summe:Integer; Wert1, Wert2:Integer);
Begin
  Summe:=Wert1+Wert2;
End;

Nach Aufruf von
ausblenden Delphi-Quelltext
1:
Addiere(summe, 3,4);					

setzt die Variable Summe auf 7. Dabei ist es auch egal, ob der Aufruf
ausblenden Delphi-Quelltext
1:
Addiere(Ergebnis, 3,4);					

erfolgt. Dann wird die Variable Ergebnis eben auf 7 gesetzt.
Ich persönlich bevorzuge allerdings in Fällen der Werterückgabe Functions

ausblenden Delphi-Quelltext
1:
2:
3:
4:
Function Addiere(Wert1, Wert2:Integer): Integer;
Begin
  Result:=Wert1+Wert2;
End;

dadurch ist klar:
ausblenden Delphi-Quelltext
1:
Ergebnis:=Addiere(3,4);					

Vielleicht hab ich es geschafft, mit diesen paar Zeilen etwas mehr Verwirrung zu schaffen......
( verdammt, wo sind die Smilies...)
Gruß oldmax

_________________
Zier dich nich so, ich krieg dich schon....