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:

UDT-Records über Namen ansprechen

 
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
Fingerboarder



Anmeldungsdatum: 09.12.2006
Beiträge: 37

BeitragVerfasst am: 26.12.2006, 15:31    Titel: UDT-Records über Namen ansprechen Antworten mit Zitat

Wie kann man UDT-Records variabel ansprechen?
Code:

type testtype
   a as integer
   b as integer
   c as string
end type

dim var as testtype

var.a = 1
var.b = 2
var.c = "teststring"
? var.c 'normales anprechen
sleep

'so und nun möchte einen bestimmten Record auslesen
'entweder a,b oder c
'da ich ja faul bin  :p  und den source kleinhalten will,
'möchte ich keine if`s verwenden
'also möchte ich die Records mit einer variable ansprechen:
'dim s as string
's = "a"
'? var.s
'das klappt aber nicht

Ich hab es bis jetzt mit if´s gemacht, aber das wird dann recht unübersichtlich. Vielleicht gibt es ja noch eine andere Möglichkeit.
Danke im Vorraus!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 26.12.2006, 17:59    Titel: Antworten mit Zitat

Zauberwort: Overload:

Code:
Type DeinTyp
 i As Integer
 s As String
End Type

Declare Function Overload ConvStr (Src As Integer) As String
Declare Function ConvStr (Src As String) As String

Dim x As DeinTyp
Dim d As String

x.i = 10
x.s = "10"

d = ConvStr(x.i)
d = ConvStr(x.s)

Function Overload ConvStr(Src As Integer) As String
   Return = Str(Src)
End Function

Function ConvStr (Src As String) As String
   Return Src
End Function


Siehe auch Referenz-Eintrag:
http://www.freebasic.de/r.php?s=OVERLOAD
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fingerboarder



Anmeldungsdatum: 09.12.2006
Beiträge: 37

BeitragVerfasst am: 26.12.2006, 18:36    Titel: Antworten mit Zitat

Ja das ist schön und gut aber es geht ja nicht um die unterschiedlichen Datentypen, sondern ich möchte aus meinem Type ein "zufälliges" (ich mein damit, das kann immer unterschiedlich sein) Record auslesen:
Code:

type meintype
   record1 as integer
   record2 as integer
   record3 as string
end type
dim var as meintype
dim s as String

var.record1 = 255
var.record2 = 123
var.record3 = "teststring"

'so, bis zu dieser Stelle ist alles klar
'nun hab ich von meinem Programm eine Variabl, zB:
s = "record1" 'oder s = "record2" oder s = "record3"
'das weiß ich vorher nicht
'nun kann ich viele if`s machen, zB:
if s = "record1" Then Print var.record1 'usw. mit den andern recs.
sleep

'ich würde aber gerne das direkt ansprechen, in PHP geht das zB. so
'   $a['test'] = 'hallo';
'   $index = 'test'
'   echo $a[$index];


(Dass das Beispiel aus PHP ein Array und kein Type ist, ist mir bewusst. ) ^^
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 26.12.2006, 19:35    Titel: Antworten mit Zitat

Ah, das meinst du. zwinkern
Hm, in FB so nicht möglich imho. Sorry.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fingerboarder



Anmeldungsdatum: 09.12.2006
Beiträge: 37

BeitragVerfasst am: 26.12.2006, 20:27    Titel: Antworten mit Zitat

Aber trotzdem Dankeschön! 8)
Ich werde das jetzt mit select case machen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 27.12.2006, 00:39    Titel: Antworten mit Zitat

Ich hab's jetzt nicht ausgetestet, aber der Spur nach:

Code:

type tfoo
  recs(3) as any ptr
end type

dim as tfoo foo

with foo
.recs(0)=allocate(LEN(integer))
.recs(1)=allocate(LEN(integer))
.recs(2)=allocate(100)
end with
*foo.recs(0)=1
*foo.recs(1)=2
dim as zstring s="abc"
*foo.recs(2)=s

for i=0 to 2
  ? *foo.recs(i)
  deallocate(*foo.recs(i))
next i



Das wird so noch nicht gehen; ich bin jetzt zu faul, es zu testen und nachzuschauen, aber prinzipiell geht es.

Grüsse!

Croco
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