Type Arrays kopieren
Übersicht

mullBetreff: Type Arrays kopieren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
'Igendein Type
Type Test Field S: String Field X,Y: Int End Type 'Arrays Global A: Test[1], B: Test[] A[0] = New Test A[0].S = "Test A[0]" Graphics 1024, 768, 0 Repeat If MouseDown(1) Then CheckMaus Until MouseDown(3) Or KeyHit(KEY_ESCAPE) Function CheckMaus() Local I% = B.length B=B[..I+1] B[I] = New Test B[I] = A[0] B[I].S = I + "_Was neues" For I = 0 To B.length-1 Print B[I].S Next FlushMouse EndFunction Bei jedem Klick ist in jedem B der gleiche Inhalt, immer der der letzten Übergabe. B müsste nach 3 Klicks anzeigen: 1_was neues 2_...... 3_...... macht aber 3_was neues 3_....... 3_....... Will einfach nur die Typewerte von einem Arrayindex in einen anderen kopieren. |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da wirst du nicht um ein manuelles Kopieren der Einzelnen Fields herumkommen. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
mull |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke,
schade das es nur umständlich geht. |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Type Test
Field S: String Field X,Y: Int End Type 'Arrays Global A: Test[1], B: Test[] A[0] = New Test A[0].S = "Test A[0]" Graphics 1024, 768 Repeat If MouseDown(1) Then CheckMaus() Until MouseDown(3) Or KeyHit(KEY_ESCAPE) Function CheckMaus() Local I% = B.length B=B[..I+1] B[I] = New Test MemCopy(B[I],A[0],SizeOf(Test)) B[I].S = I + "_Was neues" For I = 0 To B.length-1 Print B[I].S Next FlushMouse EndFunction |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wow, das nenn ich mal fluffig. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
mull |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@BORNtobeNAMELESS
Jo das klappt suber, danke. |
||
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry für's pushen, aber den Code von BORNtobeNAMELESS - könnte man den (per API) auch nach B3D portieren?
Ich suche nämlich gerade nach einer Möglichkeit hier ein Type zu kopieren, und dieses Type hat ne Menge Field Elemente die ihrereseits auch wieder Types sind. Da wäre eine MEMCOPY Funktion wirklich sehr hilfreich. Möglicherweise kann man so ja mal den fehlenden "CopyType" Befehl zusammenfummeln - Danke |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
weder kann man den nach B3D kopieren noch ist er für BM akzeptabel.
Denn MemCopy hebelt den Referenzcount aus, sprich Kopien werden auf 0 zeigen, wenn man das originalobjekt rausnimmt (sofern das die einzige Referenz darauf war) da nutzt man besser eine Reflection basierende (-> BM 1.26+ am besten 1.28 SVN weil da in Bug im BCC behoben ist) Clone methode, die macht das gleiche, einfach korrekt statt garantiert tödlich. Solche gibts hier im Board und im englischen Board |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
na das ist ja schön...obwohl ich zum einen nur Bahnhof (Reflection Clone???) verstehe und zum anderen eine Lösung für B3D suche. | ||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie gesagt unter B3D gibts nix.
Da musst du dir ne funktion machen die eine neue type instanz erzeugt und manuell feld um feld kopiert und du musst das von hand für jedes feld einprogrammieren (mit reflection kannst du einfach über alle fields loopen und fertig und musst auch net für jeden type ne neue funktion schreiben, du kannst eine instanz des types einfach ma so erzeugen) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weis das es sowas nicht unter B3D gibt...warum schreibe ich wohl diesen Post???
Die Frage ist ob man diese Reflection sonstwas Methode nicht auch für B3D gebräuchlich machen könnte. Eine neue Type Instanz zu erzeugen wäre ja durchaus akteptabel. Nur den Inhalt einer anderen in diese zu kopieren ohne sämtliche Fields durchzueiern wäre extrem praktisch. |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein kannst du nicht.
Das ist eine Kompilerfähigkeit die nur BM aufweist. Damit kann man "ansehen" was in einem Type an Daten und Funktionalität vorhanden ist. B3D hat nur manuelle kopie aller felder. (warum schreib ich wohl jetzt dann zum 3. mal das es unter B3D KEINE Möglichkeit gibt) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, ok Dreamora...
habs mir mal durchs Kleinhirn wedeln lassen und verstehe jetzt was du meinst. Danke dir für deine Geduld. Ob es Sinn macht dem lieben Mark das mal auf den Wunschzettel für Weihnachten zu packen??? |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nö, kann auch nicht geadded werden zu B3D weil das Type Handling elementar anders funktioniert.
Wenn du das willst, nimm BlitzMax und MiniB3D oder den Blitz3D SDK |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group