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:

Array erweitern

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



Anmeldungsdatum: 03.01.2006
Beiträge: 26
Wohnort: Frankfurt am Main

BeitragVerfasst am: 31.07.2006, 14:54    Titel: Array erweitern Antworten mit Zitat

Hallo nochmal.
Ich wollte fragen wie man ein Array erweitern kann.
Also aus Array(1 to 2), Array(1 to 3) erzeugen ohne den Inhalt bisherigen Inhalt zu verlieren.

Martin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mao



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

BeitragVerfasst am: 31.07.2006, 15:25    Titel: Antworten mit Zitat

Wenn mich nicht alles täuscht, musst du das Array erst irgendwo zwischensichern, zum Beispiel in einem anderem Array oder einer Datei. Ich werde das im folgenden mal am Beispiel einer Datei erklären. lächeln
Code:

FNR=FreeFile ' freie Dateinummer finden
Open "~array.tmp" For Output As #FNR
For Sichere=LBound(DasArray) To UBound(DasArray) ' von der unteren Grenze bis zur oberssten Grenze das ganze Array durcharbeiten
  Print #FNR, DasArray(Sichere)
Next Sichere
Close #FNR

AnfangAlt=LBound(DasArray)
EndeAlt=UBound(DasArray)
ReDim DasArray(NeueGroesse) ' Neue Größe des Arrays festlegen

FNR=FreeFile
Open "~array.tmp" For Input As #FNR
For Wiederherstellen=AnfangAlt To EndeAlt
  Line Input #FNR, DasArray(Wiederherstellen) ' Werte wieder einlesen
Next Wiederherstellen
Close #FNR

Kill "~array.tmp" ' temporäre Datei wieder löschen

Ich hoffe, dass der Code funktioniert (kanns net ausprobieren) und dass das verständlich genug war. lächeln

Grüße,
Mao
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
zwergnase



Anmeldungsdatum: 03.01.2006
Beiträge: 26
Wohnort: Frankfurt am Main

BeitragVerfasst am: 31.07.2006, 15:59    Titel: Alles klar soweit, aber unschön Antworten mit Zitat

Danke für die Antwort. Genau das hab ich befürchtet.
Gibt es keine elegantere Variante als das Array zwischenzuspeicher? traurig

Martin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 31.07.2006, 17:32    Titel: Antworten mit Zitat

Eine weitere, aber ebenso unelegante Methode wäre, das Array gleich mit der größten Dimension zu erstellen(also wenn du weißt, das es maximal 100 Einträge gibt, erstellst du ein Array der Größe 100). Dann brauchst nur noch eine Variable , welche die momentane Länge speichert. Oder du speicherst die momentane Länge in Index 0 des Arrays... Aber wie gesagt, das ist auch nur dirty drumherumgeschifft. verwundert
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Elvis



Anmeldungsdatum: 01.06.2006
Beiträge: 818
Wohnort: Deutschland, BW

BeitragVerfasst am: 31.07.2006, 18:37    Titel: Antworten mit Zitat

Ist doch egal, wie es funktionert... Hauptsache es geht überhaupt zwinkern
Also ich freu mich immer über jede Codezeile, die dazukommt happy durchgeknallt

Außerdem ist der Code, finde ich, gar nicht so übermäßig lang...


Grüße, Elvis
_________________
Geforce 7300GT (256MB GDDR3, Gainward) -- 2x 512MB (DDR2 800, MDT) -- AMD Athlon64 X2 EE 3800+ -- Asrock ALiveNF5-eSATA2+
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: 31.07.2006, 18:54    Titel: Antworten mit Zitat

Gabs da nicht...

Code:
'$DYNAMIC
DIM MyArray(1 TO 10) AS INTEGER
REDIM PRESERVE MyArray(1 TO 20) AS INTEGER


Das finde ich sehr elegant. zwinkern Es läuft allerdings nur unter QB 7.1/PDS (und FB).
_________________
+++ 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
Mao



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

BeitragVerfasst am: 01.08.2006, 11:39    Titel: Antworten mit Zitat

Stimmt, die DYNAMIC muss noch hinzugefügt werden. zwinkern
PRESERVE gibt's leider aber wirklich nur im PDS. traurig
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
chutullu



Anmeldungsdatum: 18.10.2005
Beiträge: 77

BeitragVerfasst am: 13.09.2006, 09:15    Titel: Antworten mit Zitat

Code:
  dim array(1 to 100) as integer
  dim dummy(1 to 100) as integer
  dim length as integer
  dim entryArray_1, entryArray_2 as integer ptr

  entryArray_1 = *array(1)
  entryArray_2 = *dummy(1)
  length = len(array)
 
  asm
        mov esi, [entryArray_1] 
        mov edi, [entryArray_2]
        mov ecx, [length]
        rep movsb       
   end asm
   redim array(1 to 200)
   entryArray_1=*array(1)
   asm
        mov esi, [entryArray_2] 
        mov edi, [entryArray_1]
        mov ecx, [length]
        rep movsb       
    end asm


Also bei mir funktioniert es, ganz einfach mittels Blocktransport.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 13.09.2006, 16:03    Titel: Antworten mit Zitat

Na, da ist aber wer bei FB gelandet zwinkern

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
chutullu



Anmeldungsdatum: 18.10.2005
Beiträge: 77

BeitragVerfasst am: 13.09.2006, 18:32    Titel: Antworten mit Zitat

@jb

danke - ist mir garnicht aufgefallen das ich im falschen Forum bin...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 13.09.2006, 21:35    Titel: Antworten mit Zitat

'dynamic kann man bei qb7.1 aber weglassen
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN


Zuletzt bearbeitet von alfonsospringer am 14.09.2006, 14:00, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 13.09.2006, 22:26    Titel: Antworten mit Zitat

Moderne Programmiersprachen / Compiler / Klassenbibliotheken bieten in diesem Zusammenhang Listen an. Diese sind dann speziell für das dynamischen Wachsen optimiert.

QB bietet etwas Vergleichbares nicht einmal im Ansatz. Am ehesten lässt sich noch ein String dazu missbrauchen (Auf Elemente CVx()/MID$() zugreifen bzw. mit MKx$() Änderungen vornehmen), ebenso kann in einzelnen Fällen auch eine temporäre Datei geeignet sein.

Falls Daten aus einer Datei in ein Feld eingelesen werden sollen, kann es sinnvoll sein, zuerst einen Grössenanalyse-Lesegang durchzuführen. Hatte ich früher bei der Musiksammlung so gelöst.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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 QBasic. 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