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:

daten aus .txt Datei Lesen und vergleichen

 
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
Die.K



Anmeldungsdatum: 07.01.2008
Beiträge: 6

BeitragVerfasst am: 04.02.2008, 14:12    Titel: daten aus .txt Datei Lesen und vergleichen Antworten mit Zitat

Hi, also ich hab ein kleines Problem, wo mein Anfängerhirn mir nicht weiter hilft lächeln.
Also bei meinem Programm werden Daten (124 Zeichen) aus einer txt Datei gelesen und in Arrays gespeichert und das aus 2 verschieden Dateien. Diese Zeichen werden mit einander verglichen wen sie gleich sind wird der Wert im neuem Array gespeichert wen sie nicht gleich sind dan wird der Wert „0“ im neuem Array gesetzt.

So schaut mein Code jetzt aus:
Code:
DIM a(1 to 124) as string
DIM b(1 to 124) as string
DIM ab(1 to 124) as string
DIM ay as string
ay = "0"
dim i as integer

OPEN "nt.txt" FOR INPUT AS #1
FOR i = 1 TO 124
INPUT #1, a(i)
NEXT i
CLOSE #1
OPEN "zenh.txt" FOR INPUT AS #1
FOR i = 1 TO 124
INPUT #1, b(i)
NEXT i
CLOSE #1


Problem ist jetzt beim Vergleichen
also ich würde es jetzt spontan so machen:
Code:
if a(1)=b(1) then ab(1)=b(1) else ab(1)=ay

if a(2)=b(2) then ab(2)=b(2) else ab(2)=ay 
if a(3)=b(3) then ab(3)=b(3) else ab(3)=ay 

und so weiter bis 124 Zeichen verglichen sind. Das geht auch aber würde es gerne mit einer Schleife machen. Ich muss sonst 127 mal den Code schreiben lächeln. Wäre nett wen mir jemand Helfen würde.

MFG
Die.K

PS.: Hab das Programm in Qbasic schon mal gemacht, das Problem dort ist das der Speicher nicht ausreicht. Ich will jetzt in freebasic es noch einfacher gestalten und nicht 124 mal die Vergleiche hin schreiben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 04.02.2008, 17:15    Titel: Antworten mit Zitat

Code:
Const different = "0" ' Hier eingeben, was eingetragen werden soll, wenn unterschiedlich

Dim As Integer handle1 = FreeFile, handle2 = FreeFile
Dim As String infile1 = "nt.txt", infile2 = "zanh.txt" ' Hier Dateinamen eingeben

If Open(infile1 For Input As handle1) <> 0 Then Print "Kann " & infile1 & " nicht öffnen!": End
If Open(infile2 For Input As handle2) <> 0 Then Print "Kann " & infile2 & " nicht öffnen!": End
If Lof(handle1) <> Lof(handle2) Then Print "Dateien nicht gleich groß!": End

Dim content(1 To Lof(handle1)) As String * 1
Dim As String a, b
For i As Integer = LBound(content) To UBound(content)
    Input #handle1, a
    Input #handle2, b
    If a = b Then content(i) = Left(a, 1) Else content(i) = different
Next

Close handle1
Close handle2

Print "Fertig!"
Print "Größe: " & UBound(content)
Print "Ergebnis:"
For i As Integer = LBound(content) To UBound(content)
    Print content(i);
Next

Sleep

End


so...? Das Ergebnis wird im Array "content()" abgelegt.

Du könntest es noch in eine neue Datei schreiben lassen. Jetzt wird es ganz einfach angezeigt.

mfG Cherry
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Die.K



Anmeldungsdatum: 07.01.2008
Beiträge: 6

BeitragVerfasst am: 04.02.2008, 19:12    Titel: Antworten mit Zitat

Hi,
danke für die Antwort, wäre nie auf so ein Code gekommen. Werde gleich ausprobieren. Ich muss nicht unbedingt alles dan in neue Datei schreiben, weil die Werte werden dan gleich für andere Vergleiche gebraucht.

Es wird ein Programm zum Auffinden von Anlagediagrammen für heiz, und raumlufttechnischer Anlagen.

MFG
Die.K

Ps.: danke nochmals lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


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

BeitragVerfasst am: 04.02.2008, 19:22    Titel: Antworten mit Zitat

Cherry hat Folgendes geschrieben:
Code:
Dim As Integer handle1 = FreeFile, handle2 = FreeFile

Dies dürfte etwas problematisch werden: Wenn eine freie Dateinummer mit FREEFILE angefordert wird, diese aber nicht unmittelbar mit OPEN auch belegt wird, könnte es passieren, dass FREEFILE in diesem Fall zwei Mal dieselbe Dateinummer liefert. => Zum auf der sicheren Seite sein: 1. FREEFILE-Abfrage, 1. OPEN-Aufruf, dann 2. FREEFILE-Abfrage und 2. OPEN-Aufruf.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 04.02.2008, 20:22    Titel: Antworten mit Zitat

oh, ja stimmt.

also:

Code:
Const different = "0" ' Hier eingeben, was eingetragen werden soll, wenn unterschiedlich

Dim As String infile1 = "nt.txt", infile2 = "zanh.txt" ' Hier Dateinamen eingeben

Dim handle1 As Integer = FreeFile
If Open(infile1 For Input As handle1) <> 0 Then Print "Kann " & infile1 & " nicht öffnen!": End
Dim handle2 As Integer = FreeFile
If Open(infile2 For Input As handle2) <> 0 Then Print "Kann " & infile2 & " nicht öffnen!": End
If Lof(handle1) <> Lof(handle2) Then Print "Dateien nicht gleich groß!": End

Dim content(1 To Lof(handle1)) As String * 1
Dim As String a, b
For i As Integer = LBound(content) To UBound(content)
    Input #handle1, a
    Input #handle2, b
    If a = b Then content(i) = Left(a, 1) Else content(i) = different
Next

Close handle1
Close handle2

Print "Fertig!"
Print "Größe: " & UBound(content)
Print "Ergebnis:"
For i As Integer = LBound(content) To UBound(content)
    Print content(i);
Next

Sleep

End


mfG Cherry
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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 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