Deutsch
Forum

Hash Key auslesen

 

Jörg
Sellmeyer
Dann hab ich auch gleich mal ne Frage zu den Hash-Arrays. Irgendwie wollen die sich mir noch nicht so recht erschließen.
cls
declare string key, value
declare hash person[]
Randomize

WhileLoop 3

    key = Format$("0000",Rnd(1000)) + " " + Str$(&Loop)]
    print key
    person[key] = "Eintrag " + Str$(&Loop)
    person[key,"Sub1"] = "Text1 " + Str$(&Loop)
    person[key,"Sub2"] = "Text2 " + Str$(&Loop)
    person[key,"Sub3"] = "Text3 " + Str$(&Loop)

Wend

print
'ohne die Eingrenzung auf key bekomme ich 12 Ausgaben
'ich will aber nur 3 Ausgaben haben. Mit key kommen aber nur die Ausgaben des letzten Eintrags heraus
ForEach Person[key],key,value
Print key,value
Print SubStr$(key,1,"|")
EndFor
'hier bekomme ich die Werte jeweils 4x
ForEach Person[],key,value
'Print key,value
Print SubStr$(key,1,"|")
EndFor
'hier passiert garnichts...

Whileloop 0,2

    Print person[]

Wend

WaitKey

Kann ich hier irgendwie nur die ersten Bezeichner auslesen? Also das, was per Zufall in das Array geschrieben wurde? Oder lese ich immer mit ForEach alles aus und nutze dann SubStr$(), um den ersten Wert zu ermitteln?
Oder anders gefragt: kann ich den Wert des ersten Eintrages auslesen, ohne den Bezeichner zu kennen?

[OFFTOPIC]
David, ich glaube, du musst ForEach mal noch in die Syntaxerkennung einpflegen...
[/OFFTOPIC]
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
09.11.2015  
 




RGH
Ich versuche, es mal zu erklären:

Du erzeugst im Hash-Array 12 Einträge, wobei jeweils 4 den gleichen ersten Schlüssel (key) haben und Nummer 2 bis 4 jeweils einen anderen zweiten Schlüssel bekommen.

Wenn Du nun im ersten FOREACH alle Eintrage mit dem letzten Wert von Key als ersten Schlüssel auflistest, bekommst Du natürlich die letzten vier Einträge des Arrays angezeigt.

Im zweiten FOREACH gibst Du keinen Schlüssel als Einschränkung an, also bekommst Du alle 12 Einträge angezeigt.

(Ach ja: Bei WHILIELOOP wäre vielleicht eine Fehlermeldung angebracht, da man ein komplettes Array nicht ausdrucken kann.)

Der Hauptzweck eines Hash-Arrays besteht eben darin, dass man nicht über eine Zahl (die Position im Array), sondern einen oder mehrere Schlüssel (auch Hash genannt) auf den Inhalt zugreift.

Ohne Weiteres kannst Du also zunächst nicht auf den ersten Eintrag zugreifen, ohne den Schlüssel zu kennen. Man kann sich aber eine kleine Schleife basteln, um den Eintrag Nr eines Hasharrays auszulesen:

Hier macht man sich den Umstand zu Nutze, dass die Systemvariable &loop auch bei FOREACH (und FOR) intern hochgezählt wird.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
09.11.2015  
 




Jörg
Sellmeyer
Danke, ich werd es mal testen. Kann es sein, dass du ein paar Doppelpunkte in dem Code vergessen hast?

Ah - es ist das, was ich auch verwenden wollte, in etwas anderer Form:
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
09.11.2015  
 




Jörg
Sellmeyer
Jetzt hab ich auch meinen Denkfehler gesehen.

So ist es ja viel sinnvoller:
cls
declare string key, value
declare hash person[]
Randomize

WhileLoop 3

    key = Format$("0000",Rnd(1000))' + " " + Str$(&Loop)
    print key
    person["Eintrag" + Str$(&Loop)] = key
    person[key,"Sub1"] = "Text1 " + Str$(&Loop)
    person[key,"Sub2"] = "Text2 " + Str$(&Loop)
    person[key,"Sub3"] = "Text3 " + Str$(&Loop)

Wend

print
ForEach person["Eintrag"],key, value
Print key,value
EndFor
Waitkey
 
XProfan X3
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
09.11.2015  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.856 Betrachtungen

Unbenanntvor 0 min.
E.T.09.12.2022
Walter10.05.2021
iF31.12.2015
rquindt30.12.2015
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Jörg Sellmeyer (3x)
RGH (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie