Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array oder wie kann ich es ablegen ? (https://www.delphipraxis.net/90741-array-oder-wie-kann-ich-es-ablegen.html)

Bernd Nowak 23. Apr 2007 08:18


Array oder wie kann ich es ablegen ?
 
Hallo,
habe viele Verweise gefunden aber nix was annährend das Thema beinhaltete, das ich suche. Also frage ich mal lieber die Gurus hier.

Ich habe eine Zuweisung von 16 Farben, die ein Programm in den Werten 0 - 16 erwartet. In Delphi habe ich die entsprechenden Farbwerte (im Hex Format). Dies ist eine statische Zuordnung also immer gleich.

Habe jetzt eine Krücke in diesem Format mit 2 Arrays:

Delphi-Quellcode:
  ColorsHex: array[0..15] of String = (
    '000000', //black
    '00286B', //blue dark
    '2169A5', //blue light
    '39459C', //blue medium
    '9C7139', //gold
    '7B7D7B', //grey light
    '101010', //grey medium
    '104508', //green dark
    '428A39', //green light
    '6B3C6B', //lavender
    'BD2000', //orange
    'A5417B', //pink
    '734194', //purple
    'A51818', //red
    'C6CBD6', //white
    'CEBA00' //yellow
    );
  ColorsName: array[0..15] of String = (
    'Black',
    'Blue Dark',
    'Blue Light',
    'Blue Medium',
    'Gold',
    'Gray Light',
    'Gray Medium',
    'Green Dark',
    'Green Light',
    'Lavender',
    'Orange',
    'Pink',
    'Purple',
    'Red',
    'White',
    'Yellow'
    );
Da die Namen direkt zu den Farbwerten gecodet werden (Programm Zuordnung über Array Index 0 - 15) wäre ein Array oder was auch immer natürlich schöner aber weiss nicht wie :)

Klaus01 23. Apr 2007 08:26

Re: Array oder wie kann ich es ablegen ?
 
Delphi-Quellcode:
type
  colors = record
     ColoreName : String[15];
     ColorHex : String[8];
  end;

colorArray = Array [0..15] of colors;
Grüße
Klaus

Blackheart 23. Apr 2007 08:31

Re: Array oder wie kann ich es ablegen ?
 
Weiss jetzt nicht so genau was Du meinst, aber vieleicht so in etwa
Delphi-Quellcode:
for i:=0 to 15 do
  if Irgendetwas = ColorsHex[i] then
  begin
  Etwasanderes:=ColorsName[i];

alzaimar 23. Apr 2007 08:31

Re: Array oder wie kann ich es ablegen ?
 
Zitat:

Zitat von Klaus01
Delphi-Quellcode:
type
  colors = record
     ColoreName : String[15];
     ColorHex : String[8];
  end;

colorArray = Array [0..15] of colors;

Wenns geht, bleib bei der Delphi-Namenskonvention für Typen ('T' vorangstellt), also 'TColors' und 'TColorArray'.
Du kannst dann das Array wie folgt definieren:
Delphi-Quellcode:
Type
  TColorEntry = Record
    ColorName : String;
    ColorColor : TColor; // String braucht man nicht
  End;
  TColorArray = Array [0..15] of TColorEntry;

Const
 MyColors : TColorArray =
  (
     (ColorName: 'Black', ColorHex: $000000),
...
  );

Bernd Nowak 23. Apr 2007 08:49

Re: Array oder wie kann ich es ablegen ?
 
Super !!!!
Ihr seit Schätze !!! :cheers:

Bernd Nowak 23. Apr 2007 09:25

Re: Array oder wie kann ich es ablegen ?
 
Hmm,
soweit so gut aber ein Problem habe ich bei der Zuweisung mit beiden Varianten:

Delphi-Quellcode:
  MyColors : ColorArray =
  (
     (ColorName: 'Black', ColorHex: '000000'),
     (ColorName: 'Blue Dark', ColorHex:'00286B'),
  );
Der Compiler meckert jetzt das Komma hinter 'Black' an und meint er würde eine geschweifte Klammer erwarten ??? Weil eigentlich ist der Aufbau nachvollziehbar ????

@alzaimar: Ist das hier ein Tipp Fehler:
Delphi-Quellcode:
(ColorName: 'Black', [b]ColorHex[/b]: $000000)
weil da hätte ich jetzt ColorColor erwartet.

alzaimar 23. Apr 2007 09:41

Re: Array oder wie kann ich es ablegen ?
 
Versuch statt dem Komma mal ein ';' Und statt 'ColorHex' ein 'ColorColor'.

Hab Verständnis: Es ist Montag früh. :oops:

Hawkeye219 23. Apr 2007 09:49

Re: Array oder wie kann ich es ablegen ?
 
Hallo Bernd,

die Unit Classes stellt mit Delphi-Referenz durchsuchenTIdentMapEntry bereits einen geeigneten Datentyp für die Speicherung eines Wertepaars zur Verfügung. Die Transformation zwischen Integer und String kannst du mit den Funktionen Delphi-Referenz durchsuchenIdentToInt und Delphi-Referenz durchsuchenIntToIdent durchführen.

Gruß Hawkeye

alzaimar 23. Apr 2007 09:56

Re: Array oder wie kann ich es ablegen ?
 
Goil, man lernt nie aus :thumb:

Bernd Nowak 23. Apr 2007 09:57

Re: Array oder wie kann ich es ablegen ?
 
Danke alzaimar, das semikolon wars und das mit ColorColor hatte ich mir ja schon gedacht :)

Das mit der Unit TIdentMapEntry ist definitiv auch ein Test Wert. Was ich an dem Beispiel hier gut finde ist wie ich über Record und Array, ArrayStrukturen wie ich sie aus PHP kenne nachbilden kann (statisch).
Wenn ich das Wissen auf dynamische Arrays noch transferieren kann dann bin ich glücklich :)


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