Aktuelle Zeit: 23.05.2013 15:31

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: kleine Erweiterung für Maps
BeitragVerfasst: 04.04.2011 01:33 
Offline
Benutzeravatar

Registriert: 14.12.2008 12:22
Ich hab auch grad an deine Erweiterung gedacht. Wiedermal ein Code von dir, der sinnlos wird :mrgreen:
viewtopic.php?f=1&t=22171&start=5

_________________
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite

padawan hat geschrieben:
Ich liebe diese von hinten über die Brust ins Auge Lösungen


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: kleine Erweiterung für Maps
BeitragVerfasst: 06.04.2012 20:15 
Offline
Benutzeravatar

Registriert: 25.03.2008 15:07
Wohnort: 's Ländle
Danke! Das hat mich auf den richtigen für mein "RenameMapKey()" gebracht. :allright:

Scheint auch ganz gut zu funktionieren. Ich hoffe nur, dass das "Map-Management" nicht durcheinandergebracht wird.
Eventuelle Nutzung auf eigene Gefahr... :wink:
EDIT: Die Sorgen waren gerechtfertigt. Der folgende Code funktioniert so nicht! (siehe nächtes Posting von STARGÅTE)
Code:
EnableExplicit

Macro RenameMapKey(Map, Key, NewKey)
  _RenameMapKey(FindMapElement(Map,Key), Key, @NewKey)
EndMacro
Procedure.i _RenameMapKey(*Pointer.String, Key$, *NewKey)
  If *Pointer
    *Pointer - SizeOf(Integer)
    Protected *ToNewKey.String = @*NewKey
    Swap *Pointer\s, *ToNewKey\s
    ProcedureReturn #True
  EndIf
  ProcedureReturn #False
EndProcedure

NewMap bla.s()

bla("US") = "United States"
bla("FR") = "France"
bla("DE") = "Germany"

Debug RenameMapKey(bla(), "US", "XYZTrulala")
Debug MapKey(bla())
Debug ""

ForEach bla()
  Debug MapKey(bla())+" = "+bla()
Next
Anmerkung: Das ich "US" zu "XYZTrulala" verunstaltet habe hat nichts weiter zu bedeuten. :wink:

_________________
PureBasic 5.00 x86/x64 | Windows 7 (x64) & Windows XP (x86) | Ubuntu-Linux (immernoch am Einsteigen...)(zumindest habe ich's vor...)


Zuletzt geändert von Regenduft am 10.04.2012 01:39, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags: Re: kleine Erweiterung für Maps
BeitragVerfasst: 07.04.2012 01:05 
Offline
Kommando SG1
Benutzeravatar

Registriert: 01.11.2005 13:34
Wohnort: Glienicke
@Regenduft:
Diese Variante ist leider nicht möglich, wenn nicht sogar ein schwerer Fehler!

Die Map-Keys sind nicht nur einfach Strings, sondern Einträge einer Tabelle zur suche des Elements, wenn ein Key gesucht wird. Eine Map durchsucht ja nicht alle Elemente und vergleich die Keys, sondern nutzt eben eine Hash-Tabelle.

Nachdem der Key verändert wurde, kann man weder über den alten noch über den neuen Key zugreifen, wie du an diesem Beispiel siehst:
Code:
EnableExplicit

Macro RenameMapKey(Map, Key, NewKey)
  _RenameMapKey(FindMapElement(Map,Key), Key, @NewKey)
EndMacro
Procedure.i _RenameMapKey(*Pointer.String, Key$, *NewKey)
  If *Pointer
    *Pointer - SizeOf(Integer)
    Protected *ToNewKey.String = @*NewKey
    Swap *Pointer\s, *ToNewKey\s
    ProcedureReturn #True
  EndIf
  ProcedureReturn #False
EndProcedure

NewMap bla.s()

bla("US") = "United States"
bla("FR") = "France"
bla("DE") = "Germany"

RenameMapKey(bla(), "US", "XYZTrulala")

Debug bla("US")
Debug bla("FR")
Debug bla("DE")
Debug bla("XYZTrulala")

_________________
Bild
 
BildBildBild


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye