Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Vergleichbares mit array of const? (https://www.delphipraxis.net/149590-vergleichbares-mit-array-const.html)

Teekeks 24. Mär 2010 20:05


Vergleichbares mit array of const?
 
Hi!
Ich würde gerne bei einem Array of const den Inhalt (also was darin gespeichert ist) ändern.

Praktisch so was in der Art:
Delphi-Quellcode:
  for i:=Low(Args) to High(args) do
  begin
  // Argumente austauschen...
    case Args[i].VChar of
    F_TITLE:
      begin
        Args[i].VString:=Get_Info(TI_TITLE);
      end;
    F_FILE_NAME:
      begin

      end;
    end;
  end;
// args = array of const
doch der Compiler sagt mir das ich bei einem array of const nichts zuweisen kann.
Gibt es etwas vergleichbaren was ich anstatt dessen nehmen kann?

ps.: ich nehme Lazarus.

himitsu 24. Mär 2010 20:44

Re: Vergleichbares mit array of const?
 
Es ginge schon, über Umwege, aber das würde ich keinem raten.

Man müßte z.B. den VType anpassen, eventuell alte Inhalte freigeben und kann erst dann was zuweisen
und selbst dann ist noch nichtmal sichergestellt, ob die neuen werte auch ordnungsgemäß freigegeben werden.



Die Lösung: Man baue ein neues Array auf.

Teekeks 24. Mär 2010 20:50

Re: Vergleichbares mit array of const?
 
Aber was für eins? eine variable vom Typ array of const kann man ja nicht definieren :(
Wie sähe denn der Umweg aus?

himitsu 24. Mär 2010 20:59

Re: Vergleichbares mit array of const?
 
Zitat:

Zitat von Teekeks
Wie sähe denn der Umweg aus?

Ganz im Ernst?
Ich hatte beim letzen Versuch schnell wieder aufgegeben, da es abundzu zu Problemen und auch Exceptions gekommen ist.

Denn das Ändern ist nicht das Problem, aber das geänderte Array wird nicht mehr ordnungsgemäß freigegeben, da nicht auf eine Veränderung reagiert wird.

Teekeks 24. Mär 2010 21:01

Re: Vergleichbares mit array of const?
 
wie machst du das mit dem ändern?
weil: ich brauche unbedingt ein array of const :)

himitsu 24. Mär 2010 21:06

Re: Vergleichbares mit array of const?
 
Nimm ein statisches array[0..x] of TVarRec oder ein dynamisches array of TVarRec und befüll es.
Dieses kannst du an einen array of const-Parameter übergeben.

Delphi-Quellcode:
var x: array[0..0] of TVarRec;
x[0].VType := vtWideString;
WideString(x[0].VWideString) := 'abc';

... // benutzen

WideString(x[0].VWideString) := ''; // freigeben

s.h.a.r.k 24. Mär 2010 21:09

Re: Vergleichbares mit array of const?
 
Empfehlendswert zu lesen für dieses Problem, vielleicht hilft der Artikel ja.

alzaimar 25. Mär 2010 06:44

Re: Vergleichbares mit array of const?
 
Ich hatte mir mal damit geholfen, das Array Of Const in die Tonne zu treten, nachdem ich es in ein Variant-Array kopiert habe. Danach war die Welt wieder in Ordnung. Jedenfalls für mich.

Teekeks, wieso muss es unbedingt ein Array Of Const sein? Meistens führt ja mehr als ein Weg zum Ziel.

Teekeks 25. Mär 2010 15:07

Re: Vergleichbares mit array of const?
 
Nunja, ich wollte die Format-Funktion ein bisschen erweitern (also als Parameter bestimmte Konstanten verwenden und diese dann ersetzen durch verschiedene Werte...)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:40 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