Type Arrays kopieren

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

mull

Betreff: Type Arrays kopieren

BeitragDi, Mai 15, 2007 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
'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
Print
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.

BladeRunner

Moderator

BeitragDi, Mai 15, 2007 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Mai 15, 2007 22:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke,
schade das es nur umständlich geht.

BtbN

BeitragMi, Mai 16, 2007 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
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
   Print
   FlushMouse
EndFunction

BladeRunner

Moderator

BeitragMi, Mai 16, 2007 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Mai 16, 2007 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
@BORNtobeNAMELESS

Jo das klappt suber, danke.

EPS

BeitragMo, März 17, 2008 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, März 17, 2008 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, März 17, 2008 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, März 17, 2008 14:27
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, März 17, 2008 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, März 17, 2008 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, März 17, 2008 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, März 17, 2008 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group