ich progge schon ein kleines Weilchen an einem Game herum;
Seit dem ich den Quellcode in 3 Units unterteilt habe (Verwaltung mehrer Units in einer Anwendung ist für mich ein neues Thema),
bekämpfe ich gerade zu eine Kaskade von Fehlerfluten die auf mich einstürzen. Weniger blümerant;
das Projekt lässt sich nicht mehr kompilieren

Die drei Units nutze ich grundlegend zur Strukturierung des Codes
unit3 : Sammlung von records und arrays
unit2 : Sammlung von kleineren Methoden, die in unit1 (quasi der Arbeitsplatz indem ich progge) der Übersichtlichkeit wegen nur stören würden.
in unit2 ist zudem Die Funktion, die beispielweise die arrays of Trecord füllt, was für mich vorübergehend ein externe Datei darstellt, in der die "GameData" gespeichert liegt.
unit1 : Hauptunit
In unit2 steht nun bei uses unit3, und bei unit1 bei uses unit2.
Wenn ich in unit1 nun eine Methode aus unit2 aufrufen möchte habe ich mir das so vorgestellt :
Code: Alles auswählen
unit unit1; // main
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
ComCtrls, StdCtrls, Unit2;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
procedure startGame;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
constructData; // aus unit2 eine procedure, die arrays aus unit3 mit Info vollstopft
// andere Mehoden
startGame;
end;
Code: Alles auswählen
// unit1.pas(108,3) Error: Identifier not found "constructData"
Code: Alles auswählen
// [...]
procedure TForm1.FormCreate(Sender: TObject);
begin
TFmain.constructData;
// andere Mehoden
startGame;
end;
Code: Alles auswählen
// Projekt kompilieren, Ziel: project1.exe: Exit code 1, Fehler: 2
// unit1.pas(108,30) Error: Only class class methods, class properties and class variables can be accessed in class methods
// unit1.pas(108,30) Error: Only class methods, class properties and class variables can be referred with class references
Was für einen Zugriffsfehler mache ich hier ? Lässt sich die procedure nicht einfach durch
Code: Alles auswählen
constructData;
Bezüglich der Frage(n) bin ich sicherlich bei "Einsteigerfragen" im richtigen Forum ..
Habe vor ein paar Jahren Lazarus in der Schule kennengelernt und code nun "freiwillig" hier und da mal, glaube aber dass einige Bildungslücken entstanden sind, was Delphi angeht,
da ich außerhalb der Schule SEHR UNSTRUKTURIERT lerne :]
Größten Dank, wenn Ihr mir weiterhelfen könntet

Hier noch unit2 in gekürzter Version
Code: Alles auswählen
unit Unit2; // data
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, Unit3;
type
{ TFmain }
TFmain = class(TForm)
private
{ private declarations }
public
{ public declarations }
procedure constructData;
procedure addSoil(map,field,soil:Integer);
function giveRessource(ressource:Tressource;ammount:integer):Tres_ammount;
end;
implementation
procedure TFmain.constructData;
begin
// 400 lines
end;
procedure TFmain.addSoil(map, field, soil: Integer);
begin
// 1liner
end;
function TFmain.giveRessource(ressource: Tressource; ammount: integer
): Tres_ammount;
var res_ammount:Tres_ammount;
begin
// 3lines
end;
end.