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 Deklaration auswerten?

 
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
SL



Anmeldungsdatum: 06.12.2009
Beiträge: 43

BeitragVerfasst am: 17.01.2010, 21:13    Titel: UDT Deklaration auswerten? Antworten mit Zitat

Hoffentlich nerve ich das Forum nicht allzu sehr mit meinen Anfängerfragen. Also, folgendes Problem:

Code:
TYPE udt_type
   var1 AS INTEGER
   var2 AS STRING * 10
END TYPE
DIM udt1 AS udt_type

In einer Sub wird diese UDT als Parameter übergeben. Wie kann ich innerhalb der Sub den Namen und Datentyp (ob String oder Nicht-String) der einzelnen Felder feststellen, sowie die Anzahl der Felder der UDT?

Die Sub müsste also in der Deklaration der übergebenen UDT nachschauen und folgendes feststellen:
    Anzahl der Felder von udt1: 2
    Name und Datentyp von Feld 1: var1.udt1, INTEGER
    Name und Datentyp von Feld 2: var2.udt1, STRING * 10

Wie geht das? Ich habe nicht den Schimmer einer Ahnung!

Ich brauch dies, um innerhalb einer Sub eine übergebenes (x-beliebiges) UDT-Array nach einer bestimmten Feld-Nr der UDT zu sortieren. Bildhaft gesprochen, ich will eine Tabelle die aus mehreren Spalten besteht, jeweils nach unterschiedlichen Spalten sortieren. Dies ist mit Sicherheit schon häufig programmiert worden. Vielleicht gibt es Programm-Beispiele?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 17.01.2010, 21:24    Titel: Antworten mit Zitat

Wird so nicht möglich sein.

Mit SizeOf kann man die Größe eines UDTs ermitteln oder mit OffsetOf den Abstand der einzelnen Typen, aber die Anzahl daraus zu ermitteln wäre viel zu unsicher, besonders mit so Konstrukten wie String * irgendwas.

Den Datentyp kann man sich auch nicht so einfach ausgeben lassen. Man kann mit Val() prüfen, ob es eine Zahl ist oder nicht, klappt aber auch nicht immer da Strings mit einer vorangestellten Zahl trotzdem mit Val() funktionieren.

Wenn du Tabellen willst, solltest du zweidimensionale Arrays verwenden und die Sortieralgorithmen selbst erstellen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
SL



Anmeldungsdatum: 06.12.2009
Beiträge: 43

BeitragVerfasst am: 17.01.2010, 21:53    Titel: Antworten mit Zitat

MOD hat Folgendes geschrieben:
Wenn du Tabellen willst, solltest du zweidimensionale Arrays verwenden ....

Wie kann ich in einem zweidimensionalen Array unterschiedliche Datentypen unterbringen? Ich dachte das geht nur in einem UDT-Array?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 17.01.2010, 22:09    Titel: Antworten mit Zitat

Mach ein String-Array, da kannst du auch Zahlen reinnehmen und bei Bedarf einfach in den gewünschten Datentyp casten.

Wenn du unbedingt verschiedene Datentypen willst, dann nimm verkettete Listen. Da gabs erst kürzlich ein Paar Diskussionen zu dem Thema, bei denen die Listen auch in Code umgesetzt wurden. Von Stueber und St_W aktuell und eine etwas ältere Version aber deswegen nicht schlechter gibt es von ThePuppetMaster. Sollte es alles im "Projekt"-Forum geben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
SL



Anmeldungsdatum: 06.12.2009
Beiträge: 43

BeitragVerfasst am: 17.01.2010, 23:09    Titel: Antworten mit Zitat

Das mit dem zweidimensionalen String-Array wäre eine Möglichkeit.

Was ich jetzt noch bräuchte, ist ein Programmbeispiel zum Sortieren eines zweidimensionalen Arrays. (Da käme meiner Faulheit sehr entgegen)

Die Name der entsprechenden Sub könnte vielleicht so lauten: Sub_Tabellen_Sortierung (Tabelle (), Nr_der_zu_sortierenden_Spalte )
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 17.01.2010, 23:39    Titel: Antworten mit Zitat

forensuche: sortieren...
und das ganze dann eben auf zwei dimensionen erweitern. z.B. mit lexikographischer ordnung. wir wissen ja nicht, was deine sortierkriterien sind.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
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