[String to Variable] möglich?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Hakkai

Betreff: [String to Variable] möglich?

BeitragSo, Okt 03, 2010 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe ein Type:

BlitzBasic: [AUSKLAPPEN]
Type TSkillcollectionForLifeform
Field skill1ID
Field skill2ID
Field skill3ID
End Type


lege neues Element an:

BlitzBasic: [AUSKLAPPEN]
SkillcollectionForLifeform.TSkillcollectionForLifeform = New TSkillcollectionForLifeform
SkillcollectionForLifeform\skill1ID = 1
SkillcollectionForLifeform\skill2ID = 2
SkillcollectionForLifeform\skill3ID = 3

und will mir nur den Inhalt in den einzelnen SkillIDs ausgeben:

BlitzBasic: [AUSKLAPPEN]
SkillcollectionForLifeform.TSkillcollectionForLifeform = First TSkillcollectionForLifeform

For i = 1 To 3
Text 100, 100+i*15, "SkillcollectionForLifeform\skill"+i+"ID"
Next


gibt mir jetzt natürlich den String aus, aber wie bekomm ich Blitz jetzt dazu, das als Variable zu interpretieren?

Gibt es dafür eine Lösung, jetzt mal von den (stark Code-verändernten) Workarounds abgesehen?

Thunder

BeitragSo, Okt 03, 2010 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Das als Variable interpretieren geht nicht. Wieso nimmst du nicht skillID als Blitz-Array?
Edit: Siehe ToeBs Beispiel.

mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
  • Zuletzt bearbeitet von Thunder am So, Okt 03, 2010 21:01, insgesamt einmal bearbeitet

ToeB

BeitragSo, Okt 03, 2010 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Type TType
    Field SkillID[3]
End Type

For i = 1 to 3
    Text 0, zeile, "Skill : "+TType\SkillID[i]
Next



mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Hakkai

BeitragSo, Okt 03, 2010 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil mehrere Lifeforms verschiedene Skillcollections haben sollen, und ich das noch variabel speichern will, das geht mit arrays eher schlecht.

Schade das es sowas wie variable() nicht gibt, es gibt ja int() und str() usw.
Würde mir ja die Funktion selber schreiben, aber mir fällt keinerlei ansatz ein.


Edit:
ToeB hat Folgendes geschrieben:
Code: [AUSKLAPPEN]
Type TType
    Field SkillID[3]
End Type

For i = 1 to 3
    Text 0, zeile, "Skill : "+TType\SkillID[i]
Next



mfg ToeB



Danke, ich wusste gar nicht das man Types in Verbindung mit Arrays verwenden kann.
Und da denkt man man hat alles gesehen Razz
  • Zuletzt bearbeitet von Hakkai am So, Okt 03, 2010 21:06, insgesamt einmal bearbeitet

Thunder

BeitragSo, Okt 03, 2010 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann würde ich ein Array machen, das groß genug ist und für jede Lebensform variabel viele Elemente des Arrays nutzen.

Das andere ist, soweit ich weiß, unmöglich.

mfg Thunder

PS: Zu ToeBs Code: Du musst natürlich zuerst eine Instanz des Types erstellen.
PS2: Zu Xeres' Vorschlag: Ich halte das bei Integerwerten für ineffizient. Kommt aber auf die maximale Skillcollectionlänge an.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
  • Zuletzt bearbeitet von Thunder am So, Okt 03, 2010 21:10, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragSo, Okt 03, 2010 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehe vielleicht nicht genau deine Programmstruktur, aber kannst du das nicht in Sub-Types unterteilen?
TLifeform -> TSkillcollection -> TSkill
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Hakkai

BeitragSo, Okt 03, 2010 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
Ich verstehe vielleicht nicht genau deine Programmstruktur, aber kannst du das nicht in Sub-Types unterteilen?
TLifeform -> TSkillcollection -> TSkill


Das habe ich mit Absicht versucht zu vermeiden, da die Zugriffe dann zuviele werden.
Leider sieht es mitleiweile noch etwas komplizierter aus, will nicht wissen wie langsam das später laufen wird, hier ein Ausschnitt, woran ich bis vor dem Vorschlag gearbeitet habe:

BlitzBasic: [AUSKLAPPEN]

TLifeFormID.TLifeForm_byID = First TLifeForm_byID ;Spieler
For SkillcollectionForLifeform.TSkillcollectionForLifeform = Each TSkillcollectionForLifeform
If TLifeFormID\TSkillcollectionForLifeformID = SkillcollectionForLifeform\id Then
TEMP_skill_id = SkillcollectionForLifeform\skill1ID

For Skill_byID.TSkill_byID = Each TSkill_byID
If TSkill_byID\id = TEMP_skill_id Then
For TSkill_byType.TSkill_byType = Each TSkill_byType
If TSkill_byID\TSkill_byTypeID = TSkill_byType\id Then
TEMP_skill_pic = CopyImage(TSkill_byType\pic)
Exit
EndIf
Next
EndIf
Next

EndIf
Next

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group