AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein einen Record-Array aus anderer Unit benutzen
Thema durchsuchen
Ansicht
Themen-Optionen

einen Record-Array aus anderer Unit benutzen

Ein Thema von Vulthan · begonnen am 14. Dez 2009 · letzter Beitrag vom 14. Dez 2009
Antwort Antwort
Vulthan

Registriert seit: 14. Dez 2009
3 Beiträge
 
#1

einen Record-Array aus anderer Unit benutzen

  Alt 14. Dez 2009, 20:04
Hallo Leute,
habe vor 2 jahren mal mehr schlecht als recht Delphi 5 gelernt und versuche nun nach eineiger Zeit Pause wieder einzusteigen.
Ich habe das Problem, dass ich einen applikationsfehler bekomme, ich aber nicht verstehe warum.

Hier der Quellcode:
__________________________________________________ _____

Unit Eingabemodul;

interface

uses
{Standart-units}, Rasse, Basis, Kultur, Profes;

Type
TForm1 = class(TForm)
{Die ganze Form halt}
procedure Beenden1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Formactivate(Sender: TObject);
PRIVATE
{private-Daklarationen}
PUBLIC
{public-Deklarationen}
end;

Rassen = TRasse;
var
Form1 : TForm1;
Rassena : ARRAY OF Rassen;
i : INTEGER;

implementation

{$R *.dfm}

procedure TForm1.Formactivate(Sender: TObject);
begin
i := 1;
end;

procedure TForm1.Beenden1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Rassena[i].Name := Edit1.Text; {--> Dort passiert der Fehler!}
Rassena[i].Modi.Lep := STRTOINT(Edit2.Text);
Rassena[i].Modi.Aup := STRTOINT(Edit3.Text);
Rassena[i].Modi.Asp := STRTOINT(Edit4.Text);
Rassena[i].Modi.MR := STRTOINT(Edit5.Text);
Rassena[i].Gross.Min := STRTOINT(Edit6.Text);
Rassena[i].Gross.Zahl := STRTOINT(Edit7.Text);
Rassena[i].Gross.Wuerfel := STRTOINT(Edit8.Text);
Rassena[i].Alter.Min := STRTOINT(Edit9.Text);
Rassena[i].Alter.Zahl := STRTOINT(Edit10.Text);
Rassena[i].Alter.Wuerfel := STRTOINT(Edit11.Text);
Listbox1.Items.Add(Rassena[i].Name);
INC(i);
end;

end.
__________________________________________________ ____
Das war die eine Unit, jetzt folgt die andere


__________________________________________________ ___

unit Rasse;

interface

uses Basis, Kultur, Profes;

Type
TGross = RECORD
Min : INTEGER;
Zahl: INTEGER;
Wuerfel: INTEGER;
end;

TAlter = RECORD
Min : INTEGER;
Zahl: INTEGER;
Wuerfel : INTEGER;
end;

TRasse = RECORD
Name : STRING;
Modi : TModi; {--> ist in Unit Basis deklariert}
Gross : TGross;
Alter : TAlter;
SFS : ARRAY OF TSF; {--> ist in Unit Basis deklariert}
Talent : TTalent; {--> ist in Unit Basis deklariert}
EKultu : ARRAY OF TKultur; {--> ist in Unit Basis deklariert}
MKultu : ARRAY OF TKultur; {--> ist in Unit Basis deklariert}
end;

implementation

end.
__________________________________________________ __________________

Ich denke es ist ein simpler Verknüpfungsfehler zwischen den Unit, den Kompilieren tu er ja.
Vielleicht muss ich TRasse irgendwie public setzen??
Ich finde den Fehler einfach nicht.

Schon mal Danke an alle
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#2

Re: einen Record-Array aus anderer Unit benutzen

  Alt 14. Dez 2009, 20:09
HI und herzlich willkommen in der DP

Zu Aller-erst: Es gibt Delphi-Tags für Delphi-Code, also bitte auch nutzen. Sonst wird es unübersichtlich.
2. gibt es irgendwelche Fehler bezüglich Syntak/Compilieren? Wenn nein, sollte eigentlich alles gehen
3. hast du dein Array gar nicht initialisiert. Es hat die Länge 0 also hat es keine Wertepaare. Du kannst also auch nix reinschreiben. Lösung: Array mit SetLength() eine Länge/Größe geben oder ein statisches Array definieren.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Vulthan

Registriert seit: 14. Dez 2009
3 Beiträge
 
#3

Re: einen Record-Array aus anderer Unit benutzen

  Alt 14. Dez 2009, 20:25
kann ich also einen dynamischen Array in so einem Fall nicht benutzen? wenn nich, warum nicht?
Bei Copilieren gibt es keine Fehlermeldung.
Schuldigung, wusste nicht dass es dafür ne spezielle Rubrik gibt.
und Danke für die schnelle Antwort
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#4

Re: einen Record-Array aus anderer Unit benutzen

  Alt 14. Dez 2009, 20:29
Ein dynamisches Array hat erstmal eine Länge von 0 und bevor man da was reinmachen kann, muß man den nötigen Speicher reservieren.

Wenn man das nicht macht, dann greift man praktisch auf nicht existierenden Speicher zu und es knallt.
Außerdem hätte die "genaue" Fehlermeldung sehr geholfen, denn darauf erkannt man recht leicht, daß kein Speicher reserviert wurde. (Zugriffsverletzung bei Adresse $000000xx ... denn 0 = nil)

Delphi-Referenz durchsuchenSetLength
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 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