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:

Arrays an Sub/Function übergeben

 
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: 29.01.2007, 21:28    Titel: Arrays an Sub/Function übergeben Antworten mit Zitat

Hallo!
Wie kann ich folgendes bewerkstelligen:
Ich habe ein UDT, das enthält mehrere Variablen.
Davon Dimensioniere ich ein Array
Code:
Dim As MeinType object(1 To 10)

Nun möchte ich meine Funktion aufrufen, die ein Array entgegen nimmt.
Weiters soll nicht das object()-Array übergeben werden, sondern nur ein record davon als Array.
Code:
Type MeinType
   a As Integer 'Das ist mein Type
   b As String
End Type

Es soll praktisch der b-String-Record als Array übergeben werden, also von allen object(1 to 10) als array.
------------------------------------------------------------------------------
Ich habe mir überlegt noch eine Hilfsfunction zu nehmen, die erstmal ein Array mit den Records zurückgibt. (Ist das möglich? Gibt es noch ALternativen?)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 29.01.2007, 21:31    Titel: Antworten mit Zitat

Hmm

Erstmal muss aus DIM nun DIM SHARED werden.

so

Code:
function meinefunktion(object as MeinType)
  print object.a
  print object.b

  return 0 'oder was auch immer
end function


Ich habs nich getestet, sollte aber gehen hoff ich - bin grad beim essen, is auf die schnelle entstanden
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 29.01.2007, 22:51    Titel: Antworten mit Zitat

Alternativer Ansatz wäre der mit Pointern:

Code:
#define NULL 0

Type MyType
   a As Integer
   b As String * 5
End Type

Declare Sub TuWas(Byval object As MyType Ptr, maxlength As Integer)

Sub TuWas(Byval object As MyType Ptr, maxlength As Integer)
   Dim i As Integer
   If object = NULL Then Exit Sub
   
   For i = 0 To maxlength - 1
      object[i].a += 1:  object[i].b += "#"
      Print object[i].a, STR$(object[i].b)
   Next i
   
End Sub

Dim As MyType Ptr object

object = Allocate(Sizeof(MyType)*10)
If ( Object = NULL ) Then End

Clear *object, 0, Sizeof(MyType)*10

object[0].a = 100
TuWas (object, 10)
Deallocate (object): object = NULL

Sleep
End


Edit: Ich werde das Beispiel nochmal überarbeiten. Es war zu fehlerhaft, um es auf die Menschheit loszulassen. durchgeknallt

Ok.. korrigiert.
_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
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