AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi 2 Arrays definiert - im Endeffekt aber ein und das selbe?
Thema durchsuchen
Ansicht
Themen-Optionen

2 Arrays definiert - im Endeffekt aber ein und das selbe?

Ein Thema von Nonsense · begonnen am 5. Apr 2004 · letzter Beitrag vom 5. Apr 2004
Antwort Antwort
Seite 2 von 2     12   
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: 2 Arrays definiert - im Endeffekt aber ein und das selbe

  Alt 5. Apr 2004, 20:22
Lass dir einfach mal, so wie ich es gemacht habe, die Adressen ausgeben, und du siehst 100%ig, ob es sich um das gleiche Array handelt oder nicht.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: 2 Arrays definiert - im Endeffekt aber ein und das selbe

  Alt 5. Apr 2004, 20:22
Zitat von Nonsense:
Vielleicht liegt es an der Zuweisung?
Delphi-Quellcode:
procedure TWorld.BufferCreature(SourceX, SourceY, TargetX, TargetY: Integer;
  BufferArray, WorldArray: TWorldArray);
begin
  BufferArray[TargetX][TargetY] := WorldArray[SourceX][SourceY];
end;
Würde bei dieser Zuweisung wirklich eine Kopie erstellt werden?
Bei dieser Zuweisung wird tatsächlich das Element in Array[SourceX/Y] kopiert. Bei:
  BufferArray := WorldArray; also ohne Indezes wird der Pointer übergeben, und es entsteht das von dir beschriebene Szenario. Schau mal, ob du irgendwo im Code sowas wie oben drin hast. Dann ist alles klaro.

gruss,
dizzy

\edit: Nen Plural zum Singular degradiert
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#13

Re: 2 Arrays definiert - im Endeffekt aber ein und das selbe

  Alt 5. Apr 2004, 20:26
Zitat von Chewie:
Lass dir einfach mal, so wie ich es gemacht habe, die Adressen ausgeben, und du siehst 100%ig, ob es sich um das gleiche Array handelt oder nicht.
Ok, gewonnen. Es sind unterschiedliche Adressen. Und ich war mir so sicher, dass es der Fehler sein muss. Dann mal wieder rein in die lustige Suche...

Danke!

Ich kombiniere mal: Wenn ich ein Objekt (Instanz) von ArrayA nach ArrayB kopieren will, spuckt der Destructor beim beenden ein EInvalidPointer aus. Wenn ich auf dem ArrayB aber ein neues Objekt erstelle (TMeineKlasse.Create) funktioniert alles wunderbar. D.h. es wird nur der Pointer übergeben.
Demnach muss es der Zuweisung liegen:
Delphi-Quellcode:
procedure TWorld.BufferCreature(SourceX, SourceY, TargetX, TargetY: Integer;
  World: TWorld);
begin
  World.FBufferArray[TargetX][TargetY] := World.FWorldArray[SourceX][SourceY];
end;
Hatte mir sowas schon gedacht. Wie kann ich denn ein Objekt von ArrayA nach ArrayB kopieren? Ich habe da keinen blassen Schimmer, deswegen auch die Zuweisung.

Hat sich erledigt! Danke an Chewie!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:55 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