-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
Ja das klappt, aber wieso klappt das nicht bei meinem richtigen Projekt? Ich habs genau so!
Ich versuch jetzt mal die nötigen Infos zu posten:
type
TKarte = record
KartenName : string; //Sieben, Acht, Neun, Zehn, Bube, Dame, König, Ass
KartenWert : Byte; //zur Bestimmung des Indexes beim Array
KartenZiffer : Byte; //Zur Namens - Bildauflösung B=11,...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
Ah, das bedeutet ich muss sie also nicht mehr freigeben? Sehr gut :)
Das mit dem Array hab ich jetzt schon ein wenig genauer lokalisieren können..
Mein jetziges Problem ist "glaube" ich, dass die Procedure irgendwie nur Call by Value ist...?!?
Ich hab jetzt mal fix nen ganz billiges Beispiel gemacht:
unit test;
interface
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
Der Fehler tritt nur auf, wenn ich das Programm schließe, also IN der Destroy.. weiterhin setzt mir Delphi auch den Curser in die FormDestroy, also sollte auch dort der Fehler sein oder nicht?
Edit:
Kommentiere ich die Zeile Objectlist.free aus, dann kommt der Fehler auch nicht
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
Es ist nicht nur eine Karte oO? Ich benutzte nur die eine Variable für alle Karten.. bei 52 Karten müsste ich ja sonst 52x Karte anlegen..
Ich hab jetzt mal probeweise zu der Objectlist 2 karten hinzugefügt.. hat auch geklappt
ObjectList.Add(Player.HandKarte);
ObjectList.Add(Player.HandKarte);
Aber nachdem ich das Programm geschlossen habe, kommt nen Fehler
procedure...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
Hey danke! Das klappt.. das werd ich jetzt mal probieren!
@DeddyH
Ich benutz immer dieselbe Variable "Karte".. also ich überschreib nur die Werte dieser.. von daher also nur einmal create :)
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
Das heißt ich muss nur einmal Karte.create aufrufen?
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
Ich HABS ausporbiert... und es kam ein Fehler deswegen fragte ich ja.
Zugriffsverletzung auf Speicher kam dann..
type
TKarte = class
KartenName : string; //Sieben, Acht, Neun, Zehn, Bube, Dame, König, Ass
KartenWert : Byte; //zur Bestimmung des Indexes beim Array
KartenZiffer : Byte; //Zur Namens - Bildauflösung B=11, D=12 K=13 Ass=1
...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
Zeile 42 passte diesmal nicht ganz :-P
Allerdings funktioniert dann die "with .. do" funktion nichtmehr oder? Das wäre ziemlich tödlich :X
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
Ich hab ne Showmessage in der Procedure drin (steht in dem Forumpost hier nicht drin) und diese gibt mir die Länge an
laenge:=length(KartenArray);
showmessage(inttostr(laenge));
Da das ganze 6x aufgerufen wird, bin ich sicher das die Procedure durchlaufen wird ;-)
Debugger wird also nichts finden..
Ich wollte das jetzt mal mit der TObjectlist machen.. aber ich hab noch recht wenig...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
cardToArray(karte,KartenGezogen);
und KartenGezogen ist vom Typ TKartenArray
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
@Detlef
Compilieren tut er es, aber die Laenge des Arrays bleibt seltsamerweise auf 0.. warum?
Das mit der Objectlist werde ich mal ausprobieren... ich scheu mich vor neuen Sachen ein bisschen *shy*
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
Es sollen später noch mehr Array's dazukommen, die auch alle mit dieser Procedure funktionieren sollen, von daher der Parameter ;)
Bei nem var-Parameter kollidiere ich dann wieder mit Inkompatible Typen.. ich stell mich gerade doof an glaube ich :-/
Ich bin sogar schon auf die Fehlermeldung gekommen:
Unit1.pas(274): Inkompatible Typen: 'Array' und 'dynamic array'
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
Jetzt meckert er zwar nicht mehr rum, dafür erhöht er aber auch nicht die Länge des Arrays!
type TKartenArray = Array of TKarte;
var
KartenGezogen : TKartenArray;
implementation
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
Aber ist er doch oder nicht?
procedure cardToArray(karte:TKarte; KartenArray:array of TKarte);
var laenge:integer;
begin
laenge:=length(KartenArray);
setLength(KartenArray, laenge+1);
KartenArray:=karte;
end;
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
OMG, ja ich seh's!
Hab die Zeile gleich mal zu setLength(KartenArray, laenge+1) geändert, allerdings sagt er mir jetzt in dieser Zeile Inkompatible Typen.
Aber das ist seltsam, ich übergebe A an diese Procedure und A ist vom Typ "array of TKarte" und KartenArray auch..
Kann es sein das die lokale Arrayvariable nicht als dynamisch anerkannt wird? Wenn ja, wie kann ich das umgehen?
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
Danke für deine Antwort,
Fehler tritt aber leider auch bei Integer auf.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Lotus,
2. Sep 2010
Hallo ich habe ein dynmaisches Array
A : array of TKarte
TKarte ist dafür unwichtig, könnten auch Bytes oder Integer sein, ist egal.
Aber jetzt kommt ein Fehler wenn ich Daten ins Array fügen will..
Die setLength des Array's ist am Anfang auf 0.. dann rufe ich folgende Procedure auf:
procedure cardToArray(karte:TKarte; KartenArray:array of TKarte);
var laenge:Byte;
begin