Seite 1 von 6

Structure an andere Structure kopieren

Verfasst: 16.02.2005 15:55
von Gast
Hallö zusammen

ich les schon länger im board, hab mich bisher nicht getraut meine
bescheuerten Fragen zu stellen, aber ich komm da nicht weiter :cry:

Ich hab da eine eine variable match mit einer structure und die Werte von match sollen in 2 Arrays mitderselben struture kopiert werden, weil sie
dort weiterbenötigt werden.

Ich weiss aber beim Erstellen von match noch nicht wo in den arrays
abgelegt werden soll.

Hier der code

Code: Alles auswählen

Structure wettkampf
Spielort.s
datum.s
gegner.s
Ergebnis.s
Spieler_1.s
Spieler_2.s
Spieler_3.s
Spieler_4.s
Spieler_5.s
Spieler_5.s
Spieler_6.s
Spieler_7.s
Spieler_8.s
Spieler_9.s
Spieler_10.s
Spieler_11.s
Spieler_Ersatz1.s
Spieler_Ersatz2.s
Schiedsrichter.s
EndStructure


match.wettkampf
Dim jahresergebnisse.wettkampf(50)
Dim statistik.wettkampf(1000)

match\Spielort = "Wiesbaden"
match\datum = "24.7.2004"
match\gegner = "GSV"
match\Ergebnis = "2:4"
match\Spieler_1 = "Huber"
match\Spieler_2 = "Müller"
match\Spieler_3 = "Eszgön"
match\Spieler_4 = "Krallmann"
match\Spieler_5 = "König"
match\Spieler_6 = "Lindauer1"
match\Spieler_7 = "Lindauer2"
match\Spieler_8 = "Schwieken"
match\Spieler_9 = "Rülberg"
match\Spieler_10 = "Steenken"
match\Spieler_11 = "Schwelm"
match\Spieler_Ersatz1 = "Zeppelin"
match\Spieler_Ersatz2 = "Barth"
match\Schiedsrichter = "von Weilen"

;  jahresergebnisse(8) = match   ......geht nicht
;  statistik(124) = match 


[/code]

wenn ich das so schreibe wie in QB dann gibt es eine
Fehlermeldung.

Wie krieg ich die Werte von match in jahresergebnisse und in
statistik ohne daß ich jeden einzelnen Wert übergebe ??? :?:
Das möcht ich vermeiden da es nen Haufen Tipparbeit ist
und es gibt auch noch eine Inventarstructure mit über 60
Inhalten und da jeden Wert einzeln übergeben ist :( :( :( :(

Kann mir wer helfen ? Geht das mit Pointern oder so?
Ich habs schon mit Copymemory pobiert aber das funzt nicht
bei strings.

Danke !!!!

LUPO

Verfasst: 16.02.2005 16:05
von Leo

Code: Alles auswählen

Structure struct
    a.l
    b.l
    c.l
    s.s
EndStructure

v1.struct
v1\a = 5
v1\b = 7
v1\c = 10
v1\s = "hallo"

v2.struct 
CopyMemory(@v1,@v2,SizeOf(struct))
Debug v2\a
Debug v2\s
Probiers mal.. ist das das was du suchst? Bei mir gehts :)

Verfasst: 16.02.2005 16:12
von DrShrek
Oder halt so:

Code: Alles auswählen

<... Dein Code wie oben ...>

CopyMemory(@match, jahresergebnisse(8), SizeOf(wettkampf))

Debug jahresergebnisse(8)\Schiedsrichter 
Debug jahresergebnisse(8)\Ergebnis 

Verfasst: 16.02.2005 16:31
von Lupo
Super ! Das ging ja fix. Danke.

Aber leider tuts alle 3 nicht. :cry: :cry:

Code: Alles auswählen

CopyMemory(@match, jahresergebnisse(8), SizeOf(wettkampf)) 

match\Schiedsrichter = "########"

Debug jahresergebnisse(8)\Schiedsrichter 
Debug jahresergebnisse(8)\Ergebnis
Da sollte doch jetzt jahresergebnisse( 8 ) \Schidsrichter doch
"von Weilen" anzeigen und nicht die ######## die sind ja
erst nach dem Copymemory geschriben worden.
Debug zeigt aber ########


Das ist ja mein Problem. Ich denk da werden nur die pointer kopiert
mit dem copymemory aber nicht die strings selbst. Was tun ?

Danke

LUPO

Verfasst: 16.02.2005 16:55
von DrShrek
Hier 3 Lösungsvorschläge:

1) Variable 'match' nicht mehr nach den kopieren benutzen
2) eigene Kopierroutine schreiben (see CopyMemoryString())
3) Wunschzettel an Fred absetzen:
Implemetierung einer CopyMemoryStructure() Funktion

Verfasst: 16.02.2005 19:35
von Lupo
Die Variable match brauch ich leider wieder sonst hätte ich gleich ins
Array geschrieben.

ich hab wegen dem copymemeorystring () in der Hilfe gesucht aber
es gibt nix wegen structuren und so :cry:

Wie könnte ich denn aus der structure die Anzahl der Elemente
rauskriegen - ok die weis ich ja von der Definition, aber besser
wäre es wenn man das auslesen könnte.

Wenn ich das weis wie komme ich dann zu den pointern in den
arrays um mit copymemorystring die strings zu übergeben
wenn ich die elementnamen nicht eintippen will ?? :|

Ich hoff ich nerv euch nicht /:->

Danke

LUPO

Verfasst: 16.02.2005 22:47
von Kaeru Gaman
hm... was hier gebraucht wird ist

a) ein GetLenStruct, das die länge in bytes der benannten struktur ermittelt,
b) ein GetElementOffset, das den byte-abstand zwischen den einzelnen bestandteilen der stucture angibt

weis da jemand eine vorhandene, praktikable lösung?

Verfasst: 16.02.2005 23:01
von freedimension
Kaeru Gaman hat geschrieben:hm... was hier gebraucht wird ist

a) ein GetLenStruct, das die länge in bytes der benannten struktur ermittelt,
Meinst du sowas wie SizeOf()? ;)

Verfasst: 16.02.2005 23:04
von remi_meier
ein GetElementOffset, das den byte-abstand zwischen den einzelnen bestandteilen der stucture angibt
Und mit OffsetOf() kannst du dir das auch basteln :D

Verfasst: 16.02.2005 23:51
von Kaeru Gaman
Kaeru Gaman hat geschrieben:weis da jemand eine vorhandene, praktikable lösung?
darauf wollte ich hinaus, ich wollte nur das problem einkreisen,
damit ihr so schnell und genau antworten könnt :wink: :allright: