AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisches Array

Ein Thema von Lotus · begonnen am 2. Sep 2010 · letzter Beitrag vom 2. Sep 2010
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#31

AW: Dynamisches Array

  Alt 2. Sep 2010, 18:41
Stepp doch einfach mal durch und schau, wann der Fehler auftritt. Wir kennen ja nur Bruchteile des Codes, was sollen wir denn sagen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Lotus

Registriert seit: 26. Feb 2007
85 Beiträge
 
Delphi 7 Personal
 
#32

AW: Dynamisches Array

  Alt 2. Sep 2010, 18:44
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
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#33

AW: Dynamisches Array

  Alt 2. Sep 2010, 18:48
Ich tipp mal darauf, das in der Objektliste schon freigegebene Instanzen sind.

Beim Freigeben der Objektliste werden die in der Liste befindlichen Objekte nochmals freigegeben, sofern die Eigenschaft 'OwnsObjects' auf True gesetz ist.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#34

AW: Dynamisches Array

  Alt 2. Sep 2010, 18:50
Das finde ich jetzt etwas merkwürdig, aber meinetwegen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Lotus

Registriert seit: 26. Feb 2007
85 Beiträge
 
Delphi 7 Personal
 
#35

AW: Dynamisches Array

  Alt 2. Sep 2010, 18:55
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:

Delphi-Quellcode:
unit test;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  myArray : array[0..3] of integer;

implementation

{$R *.dfm}

procedure fill_array(ta:array of integer; wert:integer);
var i:integer;
begin
for i:=low(ta) to high(ta) do
ta[i]:=wert;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
fill_array(myArray,2);
for i:=low(myarray) to high(myarray) do
Form1.Memo1.Text:=Form1.Memo1.Text+ ' ' +(inttostr(myArray[i]));
end;

end.
In der Memo1 steht dann 4x 0! Und keine 2.. Wie kann man das umgehen? Global "kann" ich nicht auf das Array zugreifen, die ich die procedure ja für mehrere Arrays benutzen möchte, sonst müsste ich ja immer wieder eine neue procedure schreiben für jedes array
  Mit Zitat antworten Zitat
Benutzerbild von rapante
rapante

Registriert seit: 3. Jun 2009
Ort: OPR
171 Beiträge
 
Delphi XE2 Professional
 
#36

AW: Dynamisches Array

  Alt 2. Sep 2010, 19:23
versuchs mal so, dann ersparst du dir auch die globale Variable...
Delphi-Quellcode:
unit test;

interface

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

type
  TMyArray = array[0..3] of integer;

  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure fill_array(var ta: TMyArray; wert:integer);
var i:integer;
begin
for i:=low(ta) to high(ta) do
ta[i]:=wert;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i:integer;
  MyArray: TMyArray;
begin
fill_array( myArray,2);
for i:=low(myarray) to high(myarray) do
Form1.Memo1.Text:=Form1.Memo1.Text+ ' ' +(inttostr(myArray[i]));
end;

end.
  Mit Zitat antworten Zitat
Lotus

Registriert seit: 26. Feb 2007
85 Beiträge
 
Delphi 7 Personal
 
#37

AW: Dynamisches Array

  Alt 2. Sep 2010, 21:39
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:

Delphi-Quellcode:
type
TKarte = record
            KartenName : string[12]; //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
            KartenTyp : Byte; //Karo (1), Herz(2), Pik(3), Kreuz(4)
            end;

TKartenArray = array[0..6] of TKarte;

var KartenGezogen : TKartenArray;


procedure cardToArray(karte:TKarte; TKA:TKartenArray; laenge:integer);
begin
TKA[laenge]:=karte;
end;

procedure CardToPlayer();
var i,zahl : byte;
begin
for i:=low(Player) to players-1 do begin
  cardToArray(Player[i].HandKarte[1],KartenGezogen,0);
  cardToArray(Player[i].HandKarte[2],KartenGezogen,1);
  end;
Form1.Memo1.Text:=KartenGezogen[0].KartenName;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
CardToPlayer();
end;
So, mein Problem ist, er übergibt in der procedure cardToArray "korrekt" die Karte an TKA, allerdings ist sie danach trotzdem NICHT in dem Array KartenGezogen ... was man anhand der memo1 nachvollziehn kann.. Das ist exakt dasselbe Schema wie bei dem Array, wo wir das mit der 2 gefüllt haben, nur etwas komplexer.. ich versteh's nicht warum der das nicht in das Array schreibt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 17:28 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