Ergebnis 1 bis 6 von 6

Thema: Hilfe bei FreeBasic

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Hilfe bei FreeBasic

    Hallo,
    ich bringe mir seit ein paar Tagen FreeBasic bei, warum ich das tue weiß ich selber nicht wirklich, aber ich tu es. Jedenfalls bin ich an ein Problem gestoßen und erhoffe mir von den Forums Benutzern ein klein wenig Hilfe.
    Zu dem Problem:
    Ich möchte ein TYPE haben in dem ein Array ist, allerdings kann dieses Array unterschiedlich groß sein. Die genaue Größe würde ich gerne im Constructor bestimmen, aber ich weiß nicht ob oder wie das geht.
    Zurzeit habe ich zwar eine Lösung für dieses Problem gefunden aber die sieht nicht sehr schön aus und darum...
    hoffe ich das mir einer der User hier mit dem Problem helfen kann.

    (Ich leg einfach mal die Sourcen bei, sind komische SDL Tests)
    Sourcen

  2. #2
    Wie meinst du das, dass ein Array eine unterschiedliche Größe haben kann und die bestimmt haben willst?
    Normalerweise muss man doch beim Erstellen eines Arrays immer selbst angeben, wie groß es dimensioniert werden soll. Folglich kennst du dann ja die Größe schon bei der Erstellung. Wenn du diesen Wert als Variable abspeicherst, kannst du später darauf zugreifen und hast kein Problem mehr.

    Allerdings bin ich mir nicht sicher, ob das deine Frage war. So richtig durchsteigen tu ich da nicht, was du eigentlich genau bezwecken willst. Umschreib doch mal, wozu das ganze gut sein soll, vielleicht kann man dir dann Schematisch erklären, wie das funktioniert, ohne speziell die Basic-Begriffe kennen zu müssen.

  3. #3
    Was ich eigentlich versucht habe auszudrücken war, dass die Größe des Arrays nicht von Anfang an bekannt ist. Das Array in meinem Type soll halt eine unterschiedliche Länge für verschiedene Instanzen haben und im Konstruktor übergeben werden.
    Hier mal ein kleines Java Beispiel:

    public class HelloArray{
    private int[] intArr = null;

    public HelloArray(int length){
    intArr = new int[length];
    }
    }


    So wollte ich das eigentlich haben, geht das in FreeBasic und wenn ja wie? Dabei fällt mir ein, kann ich einer Array Variablen ein anderes Array zuweisen? Weil wenn ja dann kann man das ja auch so machen.

  4. #4
    Moin,
    zunächst will ich dir die fbporticula nahelegen, die FreeBasic-Codehighlighting unterstützt. Ferner will ich noch für das deutsche FreeBasic-Forum werben, wo du mit deiner Frage optimal aufgehoben bist. Zuletzt konsultier ich meinen Mitbewohner mal, der hilft dir ganz sicher (Lloyd64, der ist grade einkaufen oder so.)

    Ciao,
    Jens

  5. #5
    Ja, das Problem kenn ich

    Wenn du in der Hilfe von der deutschen Freebasic Seite bei dem Eintrag Redim guckst, wirst du sehen, dass man damit variable Arrays erstellen kann. Allerdings steht dort dann auch folgendes:
    Zitat Zitat
    Achtung: REDIM KANN NICHT bei Arrays benutzt werden, die zu UDTs (user-defined Types) gehören, da momentan nur Arrays mit fester Größe in UDTs unterstützt werden.
    Das ist auch eines der wirklich wenigen sachen, die mich an Freebasic ärgern. Ich hab damals auch vieles ausprobiert und letztendlich einfach in dem UDT eine weitere Integer Variable angelegt. Dass Array dann sehr sehr groß gemaht, und jedesmal, wenn ich dem Array was hinzugefügt habe, die Integervariable geändert.
    Allerdings gibt es irgendwo auf der FBseite auch ein tutorial, wie man sich verkette Arrays mithilfe von pointern bastelt. Sah recht interessant aus, wollt ich mir demnächst mal ansehen.

    Naja, aufjedenfall kannste mich immer fragen, wenn was ist.
    Wobei, wenn ich mir den Code von dir ansehe, sieht das ziemlich gut aus o_o

    Naja, viel Spaß noch!

  6. #6
    Das musst du mit Pointern lösen. Du kannst zum Beispiel schreiben:

    Code:
    Type myType
        Declare Constructor(size As Integer)
        Declare Destructor()
        array As Integer Ptr
        array_size As Integer
    End Type
    
    Constructor myType(size As Integer)
        array_size = size
        array = New Integer[size]
    End Constructor
    
    Destructor myType()
        Delete array
    End Destructor
    
    Var x = myType(10)
    
    ' kleiner Test
    For i = 0 To 9
        x.array[i] = i * 2
    Next
    
    For i = 0 To 9
        Print x.array[i]
    Next
    
    Print x.array_size
    
    Sleep
    mfG Cherry

    Geändert von Cherry (08.10.2009 um 14:10 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •