Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fibonacci-Folge - Programmieren... (https://www.delphipraxis.net/144917-fibonacci-folge-programmieren.html)

Leanahtan 20. Dez 2009 17:13

Re: Fibonacci-Folge - Programmieren...
 
PS: Falls das mit deiner Delphiversion schon geht, solltest du einfach mal einen Haltepunkt setzen, und dann Zeilenweise dein Programm durchlaufen lassen - dann solltest du den Fehler eigentlich selber finden.

umbras 20. Dez 2009 17:15

Re: Fibonacci-Folge - Programmieren...
 
?? Also wenn die Zahlen kein Kovertierungsfehler enthalten oder nicht kleiner als 0 sind, werden sie in den SPeicher reingepackt. So interpretier ich das...

Wie mach ich das denn mit den Haltepunkt?


Gruß

Leanahtan 20. Dez 2009 17:20

Re: Fibonacci-Folge - Programmieren...
 
Ich weiß nicht genau, ob das mit den Haltepunkten in Delphi 5 schon geht. Wernn ja, dann kannst du einen Haltepunkt setzen, indem du links neben die entsprechende Codezeile klickst. Und dann kannst du (mit F7?) das Programm Zeilenweise weiterlaufen lassen.

Ansonsten kannst du das exit ja mal durch eine Nachricht ersetzen. Was für Zahlen gibst du denn ein?

markus5766h 20. Dez 2009 17:24

Re: Fibonacci-Folge - Programmieren...
 
Hallo,

ein paar kleine Tipps :
1) statt
Delphi-Quellcode:
then exit
benutze
Delphi-Quellcode:
then
 begin
  ShowMessage('... dein hier möglicherweise auftretender Fehler');
  Exit;
 end;
so has Du eine Kontrolle, was schiefgegangen ist.
2) Dein Block mit
Delphi-Quellcode:
For i := 0 to anz do .....
sollte so aussehen
Delphi-Quellcode:
for i := 0 to anz do
 begin
  StringGrid1.Cells ...
  zahl[i....
  StrigGrid1.Cells[i, 1] := ...
 end;
und überprüfe mal Deine Berechnung im o.a. Block ... wenn Du mit i = 0 anfängst ... :gruebel:

umbras 20. Dez 2009 17:32

Re: Fibonacci-Folge - Programmieren...
 
Keine Besserung...

Delphi-Quellcode:
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    StringGrid1: TStringGrid;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='Anzahl'; StringGrid1.Cells[0,1]:='Ergebnis';
end;

procedure TForm1.Button1Click(Sender: TObject); var zahl: array of integer; anz,i :integer;
begin
Try zahl[1]:=StrToInt(Edit1.Text) Except exit end;
Try zahl[2]:=StrToInt(Edit2.Text) Except exit end;
Try anz:=StrToInt(Edit3.Text)Except exit end;
SetLength(zahl,anz);
StringGrid1.ColCount:=succ(anz);
If anz<=0
Then
Begin ShowMessage('FEHLER...'); exit; end;
For i:=1 to anz do
 StringGrid1.Cells[i,0]:=IntToStr(i);
 zahl[i]:=zahl[i-1]+zahl[i-2];
 StringGrid1.Cells[i,1]:=IntToStr(zahl[i]);
end;

end.
Gruß

markus5766h 20. Dez 2009 17:33

Re: Fibonacci-Folge - Programmieren...
 
Hallo,
...
und eigentlich müsstest Du hier noch eine Fehlermeldung bekommen :
Delphi-Quellcode:
begin
Try zahl[0]:=StrToInt(Edit1.Text) Except exit end;
Try zahl[1]:=StrToInt(Edit2.Text) Except exit end;
Try anz:=StrToInt(Edit3.Text) Except exit end;
SetLength(zahl,anz);
...
in den Zeilen mit Try zahl[0] und Try zahl[1] greifst Du erst auf das dyn. array zu
und setzt aber erst nach Abfrage des Wertes in Edit3 die Länge !?

umbras 20. Dez 2009 17:37

Re: Fibonacci-Folge - Programmieren...
 
Delphi-Quellcode:
unit FibonacciU;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    StringGrid1: TStringGrid;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='Anzahl'; StringGrid1.Cells[0,1]:='Ergebnis';
end;

procedure TForm1.Button1Click(Sender: TObject); var zahl: array of integer; anz,i :integer;
begin
Try anz:=StrToInt(Edit3.Text)Except exit end;
SetLength(zahl,anz);
Try zahl[1]:=StrToInt(Edit1.Text) Except exit end;
Try zahl[2]:=StrToInt(Edit2.Text) Except exit end;
StringGrid1.ColCount:=succ(anz);
If anz<=0
Then
Begin ShowMessage('FEHLER...'); exit; end;
For i:=1 to anz do
 StringGrid1.Cells[i,0]:=IntToStr(i);
 zahl[i]:=zahl[i-1]+zahl[i-2];
 StringGrid1.Cells[i,1]:=IntToStr(zahl[i]);
end;

end.
verbessert! i wird angezeigt, mehr aber nicht..


Gruß

Leanahtan 20. Dez 2009 17:41

Re: Fibonacci-Folge - Programmieren...
 
Delphi-Quellcode:
zahl[i]:=zahl[i-1]+zahl[i-2];
Wenn du mit i:=1 beginnst, und deine erste Zahl in Zahl[1] speicherst, dann kann das so nicht funktionieren...

markus5766h 20. Dez 2009 17:42

Re: Fibonacci-Folge - Programmieren...
 
... Berechnungsfehler

>>>>>>>>>>>> i := 1 :
zahl[i-2] >>> gibt's im array doch gar nicht,
wäre zahl := array[-1...max] of Integer !!! :idea:

Diamont 20. Dez 2009 18:01

Re: Fibonacci-Folge - Programmieren...
 
Zitat:

Zitat von markus5766h
... Berechnungsfehler

>>>>>>>>>>>> i := 1 :
zahl[i-2] >>> gibt's im array doch gar nicht,
wäre zahl := array[-1...max] of Integer !!! :idea:

Also ich glaube, dass ich das so nicht verstehen würde ^^. Was er meint ist, wenn i:=1 ist, dann rufst du bei zahl[i-2] auf zahl[-1] zu. Das kann natürlich nicht funktionieren. Du musst bei i:=2 anfangen... Aber seltsam das da keine Fehlermeldung kommt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 Uhr.
Seite 2 von 3     12 3      

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