AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Array of String als Konstante klappt nicht...
Thema durchsuchen
Ansicht
Themen-Optionen

Array of String als Konstante klappt nicht...

Ein Thema von stho · begonnen am 26. Mär 2010 · letzter Beitrag vom 15. Dez 2019
 
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
496 Beiträge
 
Delphi 12 Athens
 
#17

AW: Array of String als Konstante klappt nicht...

  Alt 6. Dez 2019, 11:28
Was du wohl eigentlich sagen wolltest:
Zitat:
array of const ist nicht gleich TArray<TVarRec>
.
Und ja, da hast du natürlich recht. Zumindest so teilweise.

Nur habe ich deshalb nicht Unrecht. Schauen wir es uns etwas genauer an:
Ein array of const wird vom Compiler wie ein statisches Array behandelt, obwohl es intern ein PVarRec ist. Deshalb brauchen wir einen @ -Operator vor dem array (welchen ich gestern nicht geschrieben habe, weil ich gerade keinen Bock hatte, den Code zu testen und so nicht gemerkt habe, dass er eben nur fast richtig ist).

Somit wird folgende Funktion eben funktionieren:

Delphi-Quellcode:
function ArrayOfConstToArrayOfTVarRec(a: array of const): TArray<TVarRec>;
begin
  Pointer(Result) := Pointer(@a);
end;
etwas typsicherer wäre es dann aber doch, nicht beides nach Pointer zu casten, sondern das Rechte nach TArray<TVarRec> . Dann sieht das ganze so aus:

Delphi-Quellcode:
function ArrayOfConstToArrayOfTVarRec(a: array of const): TArray<TVarRec>;
begin
  Result := TArray<TVarRec>(@a);
end;
Kannst du ja gern testen, wenn du es mir nicht glaubst. Aber es funktioniert.

Showmessage(String(ArrayOfConstToArrayOfTVarRec(['hello'])[0].VUnicodeString)); // Zeigt "hello"
Dennis
  Mit Zitat antworten Zitat
 


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 05:24 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-2025 by Thomas Breitkreuz