Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

UDTs

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 30.06.2009, 09:51    Titel: UDTs Antworten mit Zitat

Ich habe zwei Probleme, bei denen ich einfach nicht weiterkomme:

a) Ich möchte in einem UDT eine beliebige Anzahl unterschiedlich großer Elemente speichern. Zur Laufzeit sollten sich Objekte hinzufügen bzw. entfernen lassen. Wie lässt sich das am Besten realisieren?

Code:
type meinObjekt
   _name as String
   _beschreibung as String
   ...
   [mehrere verschiedene Objekte (verschiedene Datentypen)]
end type



b) Ich möchte in einem UDT eine beliebige Anzahl gleicher Elemente speichern. Zur Laufzeit sollten sich Objekte hinzufügen bzw. entfernen lassen. Wie lässt sich das am Besten realisieren?

Code:
type meinObjekt2
   _name as String
   _beschreibung as String
   ...
   [mehrere gleiche Objekte (gleiche Datentypen)]
   [z.B.:
   _objekte() as meinObjekt3
   _anzahlObjekte as integer
   ]
end type

type meinObjekt3
   name as String
   beschreibung as String
end type


Die Eigenschaften sollen via Properties angesprochen werden: z.B.:
Code:
dim test as meinObjekt2
dim q as integer
dim test2 as meinObjekt3 ptr

test._name = "Test123"
test2 = new meinObjekt3

test.add_objekt(test2)

for q = 1 to test._anzahlObjekte
   print test.objekte(q).name
   print test.objekte(q).beschreibung
next


Ist so etwas mit FB überhaupt möglich? Wenn ja, wie? Wenn nein, wie muss man es verändern, damit es möglich ist?

LG, St_W
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 30.06.2009, 10:07    Titel: Antworten mit Zitat

Auf eine entsprechende Antwort wäre ich auch gespannt.. sowas in der Art hab ich auch mal gefragt und hab nur zur antwort bekommen, dass man element für element einzeln wegschreiben muss... Dass es also eine Universallösung dafür nicht gibt.

Ideal wäre sowas wie bload oder bsave für UDTs .. aber leider kann man bload und bsave nur im grafikmodus einsetzen und sie speichern nur zusammenhängende datenbereiche. Bei Strings müsste demnach nur der Pointer gespeichert werden, aber nicht der String-Inhalt.... verzwickte sache, meiner meinung nach...

EDIT: STOOOP.. SORRY Hab die fragen falsch interpretiert! da muss ich nochmal drüber nachdenken zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 30.06.2009, 10:24    Titel: Antworten mit Zitat

Zu a) Das lässt sich nur über eine verkettete liste bewerkstelligen die in ihren einzelnen kettengliedern mit einem ANY PTR auf die Objekte zeigt die verwendet werden sollen.
Ansonsten kann man elemente zur laufzeit nicht hinzufügen oder entfernen

Zu b) Kann man über ein Array machen, wenn man die Anzahl der zu erwartenden Objekte kennt und dann per ANY PTR drauf zeigen lassen...
Oder auch über eine verkettete Liste.

Zu c) Die Eigenschaften können nur dann angesprochen werden (über eine Property oder funktion) wenn der Datentyp fix oder zumindest verwandt ist. Soetwas wie vererbung gibts in FB nicht. Aber mit tricks kann man bestimmte "Eigenschaften" trotzdem an andere Objekte weitergeben. Istn bischen dirty .. hier ein kleines beispiel:

Code:

type tierklasse
    beine as integer
    arme as integer
end type

type affenklasse
    tier as tierklasse       'Hiermit wird der Affe zum Tier
    schwanz as integer
end type

type katzenklasse
    tier as tierklasse       'Hiermit wird die Katze zum Tier
    miauen as integer
end type


dim affe as affenklasse
dim katze as katzenklasse

dim tier as tierklasse ptr

tier = cast(tierklasse ptr, @affe)
tier->beine = 2
tier->arme = 2

tier = cast(tierklasse ptr, @katze)
tier->beine = 4
tier->arme = 0

print "Affe hat " & affe.tier.beine & " Beine und " & affe.tier.arme & " Arme."
print "Katze hat " & katze.tier.beine & " Beine und " & Katze.tier.arme & " Arme."
sleep


Das ist natürlich nicht wirklich vererbung, aber man kann sich damit immerhin ein wenig behelfen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz