AGB  ·  Datenschutz  ·  Impressum  







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

Array of XY löschen

Ein Thema von Mavarik · begonnen am 27. Aug 2012 · letzter Beitrag vom 28. Aug 2012
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#1

AW: Array of XY löschen

  Alt 27. Aug 2012, 17:24
oookay. Aber !
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Array of XY löschen

  Alt 27. Aug 2012, 17:38
Bin darüber leider auch schon gestolpert und voll auf die Fresse gefallen, weil ich damit gerechnet hatte, daß es automatisch umkopiert wird.

Ist richtig toll, weil ich mich nun selber darum kümmern mußte.
Für Strings gibt es Delphi-Referenz durchsuchenUniqueString, womit man dafür sorgen kann, daß es nur eine Referenz in dieser Variable gibt, also falls man mal über wilde Pointer schreibend auf den Stringinhalt zugreifen möchte.

Bei dynamischen Arrays muß man sich dagegen (was auch bei Strings funktiont) mit SetLength(A, Length(A)); behelfen und hoffen, daß Emba nicht mal auf die Saublöde Idee kommt und intern urplötzlich abprüft, ob sich die Länge wirklich ändert und dann nix macht, was dann sehr blöde enden würde.
[edit] ach stimmt ja, Delphi-Referenz durchsuchenCopy ohne Start+Länge gab's ja auch noch, auch wenn's nicht unbedingt in der OH steht.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (27. Aug 2012 um 18:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.603 Beiträge
 
Delphi 12 Athens
 
#3

AW: Array of XY löschen

  Alt 27. Aug 2012, 17:47
Ist richtig toll, weil ich mich nun selber darum kümmern mußte.
´

Bei einer reinen Zuweisung B := A; wird nur der Pointer auf das Array kopiert und beide Array-Variablen verweisen auf dasselbe Array. Willst du eine separat beschreibbare Kopie, schreibst du eben B := Copy(A);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.152 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Array of XY löschen

  Alt 27. Aug 2012, 18:17
ehem...

Delphi-Quellcode:
{$H+}
var
  A,B : AnsiString;

begin
  A := 'Cool';
  B := A;
  A := 'UnCool';

  Writeln(B); //Cool
end;
Wo ist jetzt der Unterschied? Hää jetzt steh ich ganz auf dem schlauch!

Mavarik
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.869 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Array of XY löschen

  Alt 27. Aug 2012, 18:22
Zitat:
Wo ist jetzt der Unterschied? Hää jetzt steh ich ganz auf dem schlauch!
Obwohl ein AnsiString eigentlich auch nur ein Zeiger ist, wird der Inhalt bei der Zuweisung kopiert. Spätere Änderungen werden deshalb nicht erkannt.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.152 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Array of XY löschen

  Alt 27. Aug 2012, 18:30
Obwohl ein AnsiString eigentlich auch nur ein Zeiger ist, wird der Inhalt bei der Zuweisung kopiert. Spätere Änderungen werden deshalb nicht erkannt.
Schon klar. Dann gibt es aber doch noch mehr unterschiede zwichen
DynArrays und Longstrings.

Mavarik
  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 04:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz