AGB  ·  Datenschutz  ·  Impressum  







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

Konstante mit dynamischem Array?

Offene Frage von "himitsu"
Ein Thema von himitsu · begonnen am 7. Apr 2005 · letzter Beitrag vom 4. Jun 2005
 
hardy1234

Registriert seit: 8. Aug 2004
Ort: Hamburg
26 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Konstante mit dynamischem Array?

  Alt 4. Jun 2005, 19:35
Doch gibt es, mit sogenannten varianten records. Der Tip mit:

Delphi-Quellcode:
  
  procedure yxz(var Buf);
war übrigens für sowas goldrichtig. Das ist ein untypisierter Puffer, der jeden beliebigen Typ aufnimmt. Nun kommt es halt auf die Struktur an die ankommt. Man könnte folgendes machen:

Delphi-Quellcode:

type

  TMyStruct = record
    case StructDef: integer of
      1:(Feld1_1: string; Feld2_1: integer; Feld3_1: array of real);
      2:(Feld1_2: string; Feld2_2: integer; Feld3_2: real);
    end;
  end;

procedure xyz(var Buf);
var
  a: TMyStruct;
begin
  a:= TMyStruct(Buf);
  {*** und nun kannste anfangen das abzuarbeiten ***}
  case a.StructDef of
    1: begin
    end;
    2: begin
    end;
  end; // of case
end; // of procedure xyz(var Buf);
Der Trick besteht darin, das variante Records so ziemlich alles aufnehmen können. Sie belegen gerade soviel Platz wie nötig. Nachteil ist, das strings nur maximal 255 Zeichen haben dürfen. Das läßt sich aber mit PChar ebenfalls umgehen.

Beachten mußt du lediglich, das die Feldnamen eindeutig sein müssen. Du darfst nicht 2mal den gleiche Variablennamen verwenden. Deswegen im Beispiel die Indizierung, damit sind sie dann eindeutig und können trotzdem ähnlich sein.

Die records sind für manche Sachen immer noch 1. Wahl, wie man an dem Bsp. sehen kann. Ich würde mir die Dinger mal genauer ansehen, da kann man im Zusammenhang mit strukturierten Konstanten noch erheblich mehr rausholen.
Es gibt keinen schöneren Tag als den heutigen. Der gestrige ist vorbei und von den kommenden weiß man nicht was sie bringen.
  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:04 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