Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Array nur bestimmte Werte.. (https://www.delphipraxis.net/162388-array-nur-bestimmte-werte.html)

PinkFloydFan 20. Aug 2011 09:39

Array nur bestimmte Werte..
 
Guten Tag liebe Delphi-Gemeinde!!

Ich denke ich gebe jetzt bald das Programmieren auf....:cry:
Mir fällt nix mehr ein.. ich hoffe ihr wisst weiter...

Wie deklariere ich ein Array, das nur bestimmte Werte enthält:

Delphi-Quellcode:
const Ursprung: Array[200,205,246,255] of String=('Ach','du','grosse','Jacke');
hier meckert der Compiler: [Fehler] xyz.pas(498): '..' erwartet, aber ',' gefunden

es soll also nur die Werte

Delphi-Quellcode:
Ursprung[200]
Ursprung[205]
Ursprung[246]
Ursprung[255]
geben. Ist sowas überhaupt machbar???

Grüsse!

haentschman 20. Aug 2011 10:01

AW: Array nur bestimmte Werte..
 
Hallo...

Arrays sind immer zusammenhängend als "Bereich". Für dein Vorhaben fallen mir spontan 2 Ideen ein.

1.
- eigene Funktion schreiben, welche ein dynamisches Array auf deinen Max Wert setzt und die übergebenen Werte an die entsprechenden Indexpositionen ablegt
- dann mit dem Index des Arrays arbeiten
2.
- ein Array mit der Anzahl der Werte und im Array jeweils einen Record (Wert, Index)
- um den Index zu finden müßtest du dann das Array durchlaufen und den Index auslesen und vergleichen

:hi:

rollstuhlfahrer 20. Aug 2011 10:08

AW: Array nur bestimmte Werte..
 
Oder ein Enum deklarieren und dann ein Array über das Enum aufbauen, in etwa so:

Delphi-Quellcode:
type
  TMyTyp = (mt_200, mt_205, mt_245, mt_255);

const
  myArray: array[TMyTyp] of String = ('Ach','du','grosse','Jacke');
Solange das Enum nicht mehr als 255 Werte hat, wird das auch weiterhin funktionieren.

Bernhard

PinkFloydFan 20. Aug 2011 10:34

AW: Array nur bestimmte Werte..
 
ers ma Danke für die Antworten

werde das im Laufe des Nachmittags mal versuchen..
Die Lösung von Bernhard scheint nicht schlecht.. aber was mache ich bei Werten >255??

muss jetze leider meine IDE verwaisen lassen, da in meinem
hausinternen Nachrichtensystem immer häufiger die Nachricht

Code:
WM_KOMM_JETZT_ENDLICH_ZUM_EINKAUFEN_FAHREN

mit einer Priority von 1 ausgelöst wird..

Melde mich später mit Ergebnissen wieder..

himitsu 20. Aug 2011 10:45

AW: Array nur bestimmte Werte..
 
Du kannst auch einfach eine TStringList nehmen, deine Integer in einen String konvertieren und als Key verwenden.

Uwe Raabe 20. Aug 2011 10:57

AW: Array nur bestimmte Werte..
 
Zitat:

Zitat von PinkFloydFan (Beitrag 1118242)
Die Lösung von Bernhard scheint nicht schlecht.. aber was mache ich bei Werten >255??

Es geht nicht darum, daß du nicht sowas wie mt_1024 schreiben kannst, sondern daß die Gesamtanzahl der möglichen Werte des Aufzählungstyps TMyEnum nicht mehr als 256 sein darf. Allerdings ist mir nicht bekannt, daß ein Aufzählungstyp überhaupt dieser Einschränkung unterliegt. Es könnte allerdings etwas mühsam werden, überhaupt erstmal 256 Werte für den Aufzählungstyp hinzuschreiben.

Mehr Hinweise in der Doku: Aufzählungstypen

himitsu 20. Aug 2011 11:03

AW: Array nur bestimmte Werte..
 
Bei einem SET ist die Anzahl auf 256 beschränkt, da der genutzte Assemblerbefehl nur einen Byte-Index unterstützt.

ENUMs können locker mindestens bis 2 Milliarden gehn.

rollstuhlfahrer 20. Aug 2011 11:27

AW: Array nur bestimmte Werte..
 
Zitat:

Zitat von himitsu (Beitrag 1118249)
Bei einem SET ist die Anzahl auf 256 beschränkt, da der genutzte Assemblerbefehl nur einen Byte-Index unterstützt.

ENUMs können locker mindestens bis 2 Milliarden gehn.

Dann hab ich das verwechselt.

Zitat:

Zitat von Uwe Raabe (Beitrag 1118247)
Es könnte allerdings etwas mühsam werden, überhaupt erstmal 256 Werte für den Aufzählungstyp hinzuschreiben.

Bei der neuen Grenze von 2 Milliarden könnte eventuell Delphi vorher aussteigen, weil dein Code dafür alleine größer als 6 GB sein wird.

Bernhard

PinkFloydFan 20. Aug 2011 15:41

AW: Array nur bestimmte Werte..
 
so... wieder da..
dachte nicht dass meine Frage solche Wellen schlägt.:)

Himitsu's Lösung ist für meinen Einsatzzweck die Ideale..
Zitat:

Du kannst auch einfach eine TStringList nehmen, deine Integer in einen String konvertieren und als Key verwenden.
da hätte ich auch selber drauf kommen können..:wall: :wall:
Hintergrund ist der, dass die ersten 3 Stellen eines 15-stelligen Barcodes den Hersteller des Produkts angeben...
Und die Anzahl der Hersteller kann ja dadurch 999 sein ( 2000000000 müssen's dann doch nicht sein).
Barcode zB 012345678901234

001=Intel
012=Cyrix
240=AMD
573=Zilog
usw..

Und die StringList kann ich auch noch supereinfach in ner Datenbank speichern.. Genial..
Manchmal sieht man wirklich den Wald vor lauter Bäumen nicht...

Danke euch allen!!

rollstuhlfahrer 20. Aug 2011 15:53

AW: Array nur bestimmte Werte..
 
Am besten geeignet wäre natürlich ein TDictionary<integer, string> , aber da du kein Delphi mit Generics hast, kommt das leider nicht in Frage.
Und D7 hat auch nichts entsprechendes dabei.

Bernhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 Uhr.
Seite 1 von 2  1 2      

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