Seite 5 von 6
Verfasst: 04.12.2006 13:58
von Kaeru Gaman
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()
Verfasst: 04.12.2006 13:58
von DeltaG
Xaby 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:
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
Und dann sag mir was passiert ...
>>
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

Und was ist mit
Verfasst: 04.12.2006 14:03
von Xaby

Line 13 ist da wo Heinz und Paul sich treffen
Verfasst: 04.12.2006 14:04
von Kaeru Gaman
@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.
Verfasst: 04.12.2006 14:08
von DeltaG
Stimmt, leider:
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
gibt:
debugger hat geschrieben:
2
Verfasst: 04.12.2006 14:10
von Xaby
@Kaeru
...aber dann nimm doch den pointer von den beiden Arrays,
ermittele die gesamtlänge, und benutz CopyMemory()
Genau das meinte ich.
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.

Verfasst: 04.12.2006 14:15
von Xaby
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?

Verfasst: 04.12.2006 14:25
von DeltaG
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
Verfasst: 04.12.2006 14:29
von Xaby
Das war jetzt Swap?
Verfasst: 04.12.2006 14:57
von DeltaG
Xaby hat geschrieben:Das war jetzt Swap?
Ja, ein Ersatz-Swap für dich.
Bei mir funktioniert Swap überigens.