Structure an andere Structure kopieren
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
hm... yo zugegeben,
ich bin gar nicht auf die idee gekommen, dass es nicht funktionieren könnte.
habe es eigentlich als selbstverständlich angesehen.
aber das es nicht funktioniert, hast du in deinem posting auch nicht angegeben.
...wie machen die sortier-routinen es denn dann... is ja ätzend.
...aber dann nimm doch den pointer von den beiden Arrays,
ermittele die gesamtlänge, und benutz CopyMemory()
ich bin gar nicht auf die idee gekommen, dass es nicht funktionieren könnte.
habe es eigentlich als selbstverständlich angesehen.
aber das es nicht funktioniert, hast du in deinem posting auch nicht angegeben.
...wie machen die sortier-routinen es denn dann... is ja ätzend.
...aber dann nimm doch den pointer von den beiden Arrays,
ermittele die gesamtlänge, und benutz CopyMemory()
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Und was ist mitXaby hat geschrieben:Ach Kaeru, ist schon nicht so einfach mit dir, was.
Solltest weniger versuchen mich zu belehren als Code zu schreiben, der funktioniert. Denn soweit war ich doch auch schon.
Um eine Kopie des Arrays zu machen, muss man jede einzelne
Structure-Untervariable (1.Array) einer Structure-Untervariable (Kopie) zuweisen.
Und das ist ätzend.
Schreib ruhig mal den Code, in einen Editor:
Und dann sag mir was passiert ...Code: Alles auswählen
Structure teebeutel x.l y.l EndStructure Dim paul.teebeutel(100) Dim heinz.teebeutel(100) For x=0 To 100 heinz(x)=paul(x) Next
>>
Ansatz, vielleicht macht mal ein einziges Array, was doppelt so groß ist.
Aber auch das würde nicht das Problem lösen, dass es keinen
CopyStructuredField(Quelle, Ziel)
Befehl gibt.
Jetzt verstehst du mich vielleicht![]()
Code: Alles auswählen
heinz()=paul()

Line 13 ist da wo Heinz und Paul sich treffen
Zuletzt geändert von Xaby am 04.12.2006 14:04, insgesamt 1-mal geändert.
Kinder an die Macht http://scratch.mit.edu/
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
@DeltaG
falls das funktionieren sollte, würde es aber lediglich den pointer
von heinz() auf paul() verbiegen, aber keine kopie anfertigen.
du hättest danach per heinz() und paul() zugriff auf denselben speicherbereich,
und der speicherbereich in dem heinz() erzeugt wurde liegt brach.
falls das funktionieren sollte, würde es aber lediglich den pointer
von heinz() auf paul() verbiegen, aber keine kopie anfertigen.
du hättest danach per heinz() und paul() zugriff auf denselben speicherbereich,
und der speicherbereich in dem heinz() erzeugt wurde liegt brach.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Stimmt, leider:
gibt:
Code: Alles auswählen
Structure teebeutel
x.l
y.l
EndStructure
Dim paul.teebeutel(100)
Dim heinz.teebeutel(100)
Paul(1)\x=1
heinz()=paul()
Paul(1)\x=2
Debug heinz(1)\x
debugger hat geschrieben: 2
@Kaeru
Das ist in meinen Augen nicht mehr Basic-like.
Denn Basic sollte selbsterklärend und einfach sein. Es sollte immer das machen, was man sich vorstellt.
Wieso kann der Compiler nicht einfach die Struktur und deren Inhalte kopieren? Wenn man es so angibt wie oben?
Übrigens
Geht auch nicht. 
Genau das meinte ich....aber dann nimm doch den pointer von den beiden Arrays,
ermittele die gesamtlänge, und benutz CopyMemory()
Das ist in meinen Augen nicht mehr Basic-like.
Denn Basic sollte selbsterklärend und einfach sein. Es sollte immer das machen, was man sich vorstellt.
Wieso kann der Compiler nicht einfach die Struktur und deren Inhalte kopieren? Wenn man es so angibt wie oben?
Übrigens
Code: Alles auswählen
swap heinz(x), paul(x)

Kinder an die Macht http://scratch.mit.edu/
Verstehe.
@DeltaG
(hast es ja selbst gemerkt
)
Du meinst also, man kann sich sogar die Schleife sparen.
Ist cool.
Das war jetzt zu einfach
Und wie kann man nun einen Bereich kopieren?
Oder brauch mal sowas im wahren Leben gar nicht?
Ich weiß es nicht, ich komm auch ohne aus.
Ist nur die Frage, wann dann die GBs RAM voll sind
>> Aber nun kommt es!
Das richtige ergebnis der Wiederherstellung müsste lauten: 1
Denn zuerst stand in Paul eins drin, dann wurde angeblich der Inhalt von Paul in Heinz geschrieben.
Danach Paul auf zwei gesetzt.
Also müsste in Heinz die eins sein.
Aber was steht drin?

@DeltaG
(hast es ja selbst gemerkt

Du meinst also, man kann sich sogar die Schleife sparen.
Ist cool.

Das war jetzt zu einfach

Und wie kann man nun einen Bereich kopieren?
Oder brauch mal sowas im wahren Leben gar nicht?
Ich weiß es nicht, ich komm auch ohne aus.
Ist nur die Frage, wann dann die GBs RAM voll sind

>> Aber nun kommt es!
Das richtige ergebnis der Wiederherstellung müsste lauten: 1
Denn zuerst stand in Paul eins drin, dann wurde angeblich der Inhalt von Paul in Heinz geschrieben.
Danach Paul auf zwei gesetzt.
Also müsste in Heinz die eins sein.
Aber was steht drin?

Kinder an die Macht http://scratch.mit.edu/
Vielleicht so:
Code: Alles auswählen
Structure teebeutel
x.l
y.l
EndStructure
Dim paul.teebeutel(100)
Dim heinz.teebeutel(100)
Dim dummy.teebeutel(100)
Paul(1)\x=1
Heinz(1)\x=2
Debug Paul(1)\x
Debug Heinz(1)\x
dummy()=Paul()
Paul()=Heinz()
Heinz()=dummy()
Debug Paul(1)\x
Debug Heinz(1)\x
Paul(1)\x=3
Heinz(1)\x=4
Debug Paul(1)\x
Debug Heinz(1)\x
debugger hat geschrieben:1
2
2
1
3
4