 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Die.K
Anmeldungsdatum: 07.01.2008 Beiträge: 6
|
Verfasst am: 04.02.2008, 14:12 Titel: daten aus .txt Datei Lesen und vergleichen |
|
|
Hi, also ich hab ein kleines Problem, wo mein Anfängerhirn mir nicht weiter hilft .
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 . 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 |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 04.02.2008, 17:15 Titel: |
|
|
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 |
|
 |
Die.K
Anmeldungsdatum: 07.01.2008 Beiträge: 6
|
Verfasst am: 04.02.2008, 19:12 Titel: |
|
|
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  |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 04.02.2008, 19:22 Titel: |
|
|
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 |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 04.02.2008, 20:22 Titel: |
|
|
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 |
|
 |
|
|
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.
|
|