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:

Text aus einer Datei einlesen und verarbeiten!!!!!

 
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
Duffman



Anmeldungsdatum: 20.07.2007
Beiträge: 7

BeitragVerfasst am: 01.08.2007, 13:30    Titel: Text aus einer Datei einlesen und verarbeiten!!!!! Antworten mit Zitat

Ich hab folgendes problem:
Ich möchte ein programm schreiben, dass aus einer Textdatei daten einliest, diese verarbeitet und dann in einer anderen Textdatei speichert. Die Datei, die das Programm auslesen soll ist 2,4 MB groß und besteht meist aus irgendwelchen zeichen, wie z.B.: TZ$$/(?J/&(§)PÖN)U&/§()*?VC"%"OBO.
(Was die Zeichen für einen Sinn haben ist unwichtig.)

Mein Programm schaut folgendermaßen auß(Die verarbeitung habe ich weggelassen, denn die ist hier unwichtig, der fehler tritt schon vorher auf):
Code:
cls
Open "C:\test.txt" for input as 1
do
line input #1, a$

open "C:/test2.txt" for append as 2
print #2, a$
close 2

loop until eof(1)
close 1

end


Das problem ist, dass in Test2.txt nicht der komplette text steht, sondern nur ein paar zeilen.
Ich denke es liegt an der Größe von test.txt(2,4MB), denn mit kleineren Texten funktioniert es wunderbar.
Was soll ich machen?

Danke schon mal im Voraus.
Duffman
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



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

BeitragVerfasst am: 01.08.2007, 13:46    Titel: Antworten mit Zitat

1. Du öffnest die zweite Datei immer wieder neu. (Nicht gut...genauer gesagt: Dürfte QB gar nicht zulassen. zwinkern)
2. Stehen in der Datei auch immer Zeilen, d.h. jede Zeile wird von Chr$(10)+Chr$(13) abgeschlossen?

/edit: Ich sollet vllt. noch den Source mal Stückchen umstellen:
Code:

cls
Open "C:\test.txt" for input as 1
open "C:/test2.txt" for append as 2
do
line input #1, a$
print #2, a$
loop until eof(1)
close 2
close 1

end


Editiert durch Moderator: Fehlerhafte Code-Tags korrigiert. (Sebastian)
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


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

BeitragVerfasst am: 01.08.2007, 14:06    Titel: Antworten mit Zitat

Deine test2.txt hast du ja vorher nicht gelöscht. kann es sein, dass das, was du darin siehst, noch überreste von vorher sind?

versuche mal maos methode, aber wandle APPEND in OUTPUT um.
_________________
» 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
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

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

Mao hat Folgendes geschrieben:
Editiert durch Moderator: Fehlerhafte Code-Tags korrigiert. (Sebastian)
lachen
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


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

BeitragVerfasst am: 01.08.2007, 15:23    Titel: Antworten mit Zitat

aha. was ist jetzt daran so witzig? auch ein administrator (einer, der verwaltet) ist ein moderator (einer, der aufpasst). lass bitte diese sinnlosen posts in zukunft, kthxbai.
_________________
» 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
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 01.08.2007, 17:08    Titel: Antworten mit Zitat

Das Problem hatte ich mit dieser Konstruktion

Code:
OPEN "datei.txt" FOR INPUT AS #1
DO
...
LOOP UNTIL EOF(1)
CLOSE #1


auch schon. Du könntest mal versuchen, die Datei im Binärmodus zu öffnen und Byteweise auszulesen, etwa so:

Code:
DIM byte AS STRING * 1

OPEN "datei1.txt" FOR BINARY AS #1
OPEN "datei2.txt" FOR BINARY AS #2

FOR p# = 1 TO LOF(1)

 GET #1, p#, byte

 IF byte = "&" THEN
  np# = np# + 1
  PUT #2, np#, byte
 END IF

NEXT

CLOSE #1
CLOSE #2


Als "Verarbeitung" werden hier alle &-Zeichen aus der ersten Datei gesucht und in die zweite geschrieben. Wichtig ist nur, dass bei Änderungen der Daten sich beim Kopieren evtl. auch die Bytepositionen ändern. Sieht man hier an den Variablen p# (Position in der Ausgangsdatei) und np# (Position in der zweiten Datei).

Gruß
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Duffman



Anmeldungsdatum: 20.07.2007
Beiträge: 7

BeitragVerfasst am: 02.08.2007, 20:00    Titel: Antworten mit Zitat

Danke, mit der Variante von skilltronic im Binärmodus klappts!!!
duffman
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Duffman



Anmeldungsdatum: 20.07.2007
Beiträge: 7

BeitragVerfasst am: 03.08.2007, 16:48    Titel: Antworten mit Zitat

Ergänzung:
Habe noch eine Frage. Die hat zwar nichts mit dem Thema zu tun, aber ghört zu dem projekt, dass ich verfolge(und ich wollte nicht noch ein neues Thema eröffnen).

Also, ich habe jetzt das programm geschrieben. Das programm arbeitet mit einem frei erfundenen Dateityp: *.m
jetzt möchte ich, wenn man diese datei öffnet, dass diese datei mein programm startet UND sie gleich verwendet. Also müsste irgendwie der Pfad un der dateiname an mein programm übergeben werden.
Wie stellet man das an?

Danke
Duffman
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4700
Wohnort: ~/

BeitragVerfasst am: 03.08.2007, 16:54    Titel: Antworten mit Zitat

Dazu gibt es betriebssystemabhängige Lösungen, "öffne mit". Unter Windows wird das in der Registry eingetragen, am einfachsten über irgend so einen Unterpunkt bei "Ordneroptionen" (dritter Reiter war es glaube ich, genaueres müssen die Windows-Nutzer erklären).
Wenn du dann eine *.m-Datei öffnest, startet das festgelegte Programm und der Dateiname wird als Parameter übergeben.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 03.08.2007, 17:01    Titel: Antworten mit Zitat

Also.
Öffne ein neues Explorer Fenster (Start => Ausführen => explorer.exe) gehe dann auf "Extras" => "Ordneroptionen..." => "Dateitypen" => "Neu" => "m" => Ändern => Durchsuchen => _Pfad_zu_deinem_Prog_ => OK => Erweitert => Neu => _Neue_Vorgänge_nach_belieben_hinzufügen_ => Anderes Symbol => _Icon_auswählen_
Fertig.

Man kann das auch mit regedit machen, da kann man aber was kaputt machen...
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


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

BeitragVerfasst am: 03.08.2007, 18:33    Titel: Antworten mit Zitat

jetzt fehlt nur noch das Wichtigste: In QBasic liest du den übergebenen Pfad mit COMMAND$ aus (ist eine konstante). ACHTUNG: Der Dateiname wird nicht im 8.3-Format übertragen! So kannst du ihn nicht in deinem Programm verwenden. Ich hatte mal ne Routine, die 8.3-Pfade erzeugt, vielleicht finde ich sie... wenn nicht: auf qbasic.de nachschauen (evtl. ABC-Archiv).
_________________
» 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 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