Hey, danke lbccaleb. Werde mir den Wikipedia Artikel erst mal vornehmen. Obwohl danach immer noch kein Code, bzw. nur der hier gepostete da ist, den ich ja verstehen will.
Ich kann gerne meinen Code hier posten, der mit FPC nicht läuft. Es ist der von MrMooed, von hier kopiert. Habe den in eine
Unit gepackt. Hier ist sie:
Delphi-Quellcode:
unit UTriangle;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
procedure PasDreieckHasPlanes(
var Ebenen: Integer);
procedure BildeDreieck;
procedure AusgabeInTabelle;
implementation
var
Ebene: Integer;
PasDreieck:
array of Integer;
procedure PasDreieckHasPlanes(
var Ebenen: Integer);
var
PasDreieck :
Array of Integer;
i, j : Integer;
begin
Ebene := Ebenen;
for i:=0
to Ebenen -1
do
begin
SetLength(PasDreieck[i], i+1);
// Länge für jede Ebene um 1 erweitern
//An dieser Stelle in Lazarus Type mismatch
//liegt das an der falschen Array Definition (nur eindimensional dimensioniert?)
PasDreieck[i,Low(PasDreiech[i])] := 1;
// Eins am Anfang
//hier Illegal Qualifier ( Folgefehler ? )
PasDreieck[i,high(PasDreieck[i])] := 1;
// Eins am Ende
end;
end;
procedure BildeDreieck;
var i,j: Integer;
begin
for i:=2
to Ebene -1
do
for j:=1
to High(PasDreieck[i]) -1
do
begin
PasDreieck[i,j] := PasDreieck[i-1,j-1] + PasDreieck[i-1, j];
end;
end;
procedure AusgabeInTabelle(tabelle: TStringGrid);
var i,b: Integer;
begin
if Assigned(tabelle)
then
for i:=Low(PasDreieck)
to High(PasDreieck)
do
for b:=Low(PasDreieck[i])
to High(PasDreieck[i])
do
tabelle.Cells[i,b] := IntToStr(PasDreieck[i,b]);
end;
procedure AusgabeInMemo(memo: TMemo);
var i,b: Integer; Plane:
String;
begin
if Assigned(Memo)
then
for i:=Low(PasDreieck)
to High(PasDreieck)
do
for b:=Low(PasDreieck[i])
to High(PasDreieck[i])
do
begin
Plane := IntToStr(PasDreieck[i]) + '
';
memo.Lines.Add(Plane);
end;
end;
end.
//Im Formular:
procedure TForm1.btnApplyClick(Sender: TObject);
begin
FPlanes := IntToStr(Edit1.Text);
//Anzahl Ebenen
PasDreieckHasPlanes(FPlanes);
BildeDreieck;
//Hier käme dann die Ausgabe des Pascalschen Dreiecks
end;
[Edit]:
Nach Anderung der Deklaration in Array of Array of Integer wird SetLenth so akzeptiert, aber der Error: Illegal qualifier bleibt bestehen.
Hab mir auch die .zip Datei von @lbccaleb runter geladen. Diesen Code werde ich in den nächsten Tagen studieren und dazu auch den Wikipediartikel studieren. Wenn dann noch Fragen übrig sind, melde ich mich eh wieder.
Aber es bleibt das seltsame Verhalten von Lazarus bei der Übersetzung des Codes von MrMooed. Was kapiert FPC da nicht?
.