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:

matrix aus excel in QB richtig einlesen?

 
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
eva_b



Anmeldungsdatum: 28.11.2004
Beiträge: 1
Wohnort: München

BeitragVerfasst am: 28.11.2004, 10:47    Titel: matrix aus excel in QB richtig einlesen? Antworten mit Zitat

hi!
ich habe eine matrix m*n aus einer excel-tabelle. diese kann ich z. b. im CSV-format speichern. ich bekomme die einzelnen zeilen dann auch in QB eingelesen, mit LINE INPUT #1, a$. Allerdings habe ich dann den ganzen String auf einmal, mit semikolon getrennt.

Wie kann ich es anstellen, dass ich den eingelesenen zahlen gleich matrixelemente A(x,y) zuordne?

Hintergrund ist, dass ich diese matrixelemente dann "umsortieren" möchte.

wer hat da einen tipp?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 28.11.2004, 10:59    Titel: Antworten mit Zitat

Hi,

Am einfachsten wäre es, wenn du nicht mit Semikolon, sondern mit nem schlichten Komma speichern könntest - dann wärs möglich, einfach mit INPUT nacheinander die Spalten und Zeilen einzulesen.
Allerdings weißt du dann nicht automatisch, wieviele Spalten es gibt und innerhalb des Textes zwischen zwei (ehemaligen) Semikolons, die jetzt kommas sind, dürfte kein Komma mehr stehen, weil das wiederum das Programm durcheinander brächte. Darum hab ich mir mal folgenden Code überlegt:

was du brauchst, ist der Befehl MID$(String$, Position, Länge).

Angenommen deine Zeile steht in Z$.

jetzt kannst du mit
Code:
FOR c = 0 TO LEN(Z$) 'Zeichenkettenlänge von Z$
  B$ = MID$(Z$, c, 1)
NEXT c

Buchstabe für Buchstabe nacheinander in B$ anschaun.

Wenn B$ also mal ein ";" ist, muss was passieren.


Folgenden Code könntest du verwenden, um alles zwischen zwei ";" nacheinander in ein ARRAY zu schreiben.

Z$ ist wieder dein $tring, den du Zeile für Zeile aus der Datei importierst.
Code:

Z$=Z$+";"       'Falls am Schluss kein ";" ist, wird sonst das letzte Element nicht ausgewertet, daher füge ich hier ein Semikolon hinzu.

DIM SpaltenInhalt$(1 TO 40)        ' Dimensioniert das Array für maximal 40 verschiedene Einträge. (mit einem 2D-Array könntest du dann gleich die ganze Tabelle in ein Array laden, aber ich denke, dass du das nicht brauchst)

ArrayNummer = 1
FOR c = 0 TO LEN(Z$)                                'Zeichenkettenlänge von Z$
  B$ = MID$(Z$, c, 1)
  IF B$ = ";" THEN
    SpaltenInhalt$(ArrayNummer)=SAMMEL$             'Sammel-String ins Array schreiben
    SAMMEL$="":B$="":ArrayNummer = ArrayNummer + 1  'ArrayNummer um 1 erhöhen
  END IF
  SAMMEL$=SAMMEL$+B$                                'Sammelt alle Zeichen. Dieser Sammel-String wird nach dem Übertragen ins Array wieder geleert und sammelt dann aufs Neue.
NEXT c


Ich hoff mal, dass das ungefähr funktioniert.

In SpaltenInhalt$(1), SpaltenInhalt$(2) usw hast du dann den Inhalt der verschiedenen Spalten, wie der Variabel-Name schon sagt zwinkern

Grüßle,
Mecki
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
dreael
Administrator


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

BeitragVerfasst am: 28.11.2004, 12:30    Titel: Antworten mit Zitat

Was Du brauchst, ist noch eine split()-Funktion, um die mit Semikolon getrennten Felder zu teilen. Siehe dazu

http://beilagen.dreael.ch/QB/SPLIT.BAS
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 29.11.2004, 00:09    Titel: Antworten mit Zitat

wenn du genau weißt, dass in [b]jeder Zeile eine Bestimmte Anzahl von Semikolons vorkommt brauchst du die ganzen Routinen nicht.
wenn du weißt wie viele Teile in einer Zeile stehen kannst du das einfach in mehrere Variablen einlesen:
Code:
INPUT #1, teil1$, teil2$, teil3$, teil4$

das musst du halt mit so vielen teilen machen wie da auch drinstehen, also immer ein Teil mehr als Semikolons in der Zeile sind.
wenns unterschiedlich viele werden hast du aber kaum noch ne Chance, es sei denn es sind immer abwechselnd 2 Teile, 3 Teile, 2 Teile, 3 Teile oder irgendein System.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
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 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