For/Next schleife für Dateien
Übersicht BlitzBasic
 BlitzBasic  Allgemein
 Allgemein|   | AlkanBetreff: For/Next schleife für Dateien |  Mo, Jan 25, 2010 21:46 Antworten mit Zitat   | 
|---|---|---|
| Hi leute!   Also ich wollte mal Lines aus einer Datei auslesen doch damit ich ja nicht alles 1000 Zeilen mit ReadLine einzeln auslesen muss wollte ich eine For/Next Schleife einbauen Doch da liest und zeigt es ja immer nur die 1.Zeile Ich hab auch mal nachgesehen ob es eine Funktion gibt die die anzahl der lines ermittelt doch ich hab nichts gefunden Ich wer froh wenn ihr mir helfen könnt Danke im vorraus MfG Alkan Edit:Ok! Dann ist hier mal der Code: Code: [AUSKLAPPEN] Graphics 640,480,0,2
 Global filename$ Print "Press Enter to continiue" Repeat If KeyDown(28)Then filenam() Until KeyHit(1) End Function mode() modus%=Input("Select Mode (1=Read,2=Write): ") Select modus% Case 1 readfi Case 2 writefi Default Print "Please Select Mode 1 or Mode 2!" End Select End Function Function filenam() FlushKeys filename$=Input("FileName(+FilePos): ") filename$=filename$+".package" mode() End Function Function readfi() file=ReadFile(filename$) If file=0 Then Print "File does not exist!" For i=0 To Eof(file) dd$=ReadLine(file) Next For i=0 To Eof(file) Print dd$ Next End Function Function writefi() End Function P.S. Hab fast alle Smileys entfernt Edit:oh..habs grade gelöst! Hab das wohl übersehen https://www.blitzforum.de/help/Eof Und danke an euch! Edit:Und da wäre noch eine Frage: Wie kann man den Error balken abschalten? Ich hab schon folgendes probiert: Code: [AUSKLAPPEN] If file=0 then Runtimeerror=false Also dass da dann nicht mehr Error!Stream does not exist!"steht und das programm endet sondern dass es im Programm steht und nicht endet? MfG Alkan | ||
| Hauptrechner: Win7 Ultimate x64|AMD Phenom II X4 965 BlackEdition 4x3.4GHz|4 GB DualKit DDR3-1600 Ram|1.5 TB Samsung EcoGreen|Cougar CM 700Watt|ASRock M3A790GFX/120M|Nvidia GeForce 9500GT|Ati Radeon HD3300(Onboard-Deaktiviert) Server(früher Hauptrechner): Ubuntu 9.1 x86|Intel P4 HT 3GHz|Ati Radeon X600Pro|200 GB HDD Worklog: Planetensimulation Homepage(Under Construction): alkan96.dyndns.org Wenn schon falsch, dann richtig falsch. | ||
- Zuletzt bearbeitet von Alkan am Mo, Jan 25, 2010 22:11, insgesamt 4-mal bearbeitet
|   | XeresModerator |  Mo, Jan 25, 2010 21:50 Antworten mit Zitat   | 
|---|---|---|
| Weniger Smiliys und mehr Erklärung was du machen möchtest, wäre hilfreich. Eine Datei endet bei EoF  - End of File. Oder möchtest du eine Datei nur teilweise einlesen? | ||
| Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960 Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) | ||
|   | Nicdel |  Mo, Jan 25, 2010 21:51 Antworten mit Zitat   | 
|---|---|---|
| Ich versteh das auch nicht so ganz. Aber Glückwunsch, so viele verschiedene Smilies in einem Beitrag hat bisher noch keiner geschafft. Edit: Was heißt nur die erste Zeile? Normalerweise werden die Zeilen nacheinander ausgelesen, egal ob Schleife oder nicht. | ||
| Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 | ||
|   | Alfadur |  Mo, Jan 25, 2010 21:59 Antworten mit Zitat   | 
|---|---|---|
| Wenn du jede Zeile nur in deiner dd Variable speicherst, wird die Variable natürlich jedesmal überschrieben. Wenn du es unbedingt in zwei For Schleifen machen mußt, dann mußt du alle Zeilen in ein Array z.B. einlesen. Oder du setzt das readline und das print in dieselbe For Schleife... | ||
| A Cray is the only computer that runs an endless loop in less than four hours. | ||
|   | Thunder |  Mo, Jan 25, 2010 22:02 Antworten mit Zitat   | 
|---|---|---|
| Ganz klar: Code: [AUSKLAPPEN] Function readfi()
 file=ReadFile(filename$) If file=0 Then Print "File does not exist!" For i=0 To Eof(file) dd$=ReadLine(file) Next For i=0 To Eof(file) Print dd$ Next End Function Hier liegt der Fehler begraben. Du liest erstmal alle Zeilen nacheinander in die Variable dd(was für ein Name  ). Aber die Variable dd merkt sich nur die letzte Zeile. Später bekommst du dann auch nichts mehr ausgegeben, weil das Ende der Datei schon erreicht ist. Das könnteste folgendermaßen lösen: Code: [AUSKLAPPEN] Function readfi()
 file=ReadFile(filename$) If file=0 Then Print "File does not exist!" Repeat Print ReadLine(file) Until Eof(file) End Function So sparst du dir die Variable. Da die Zeile, die aus der Datei gelesen wird direkt an Print weitergegeben wird. Eof  funktioniert, soweit ich weiß, nicht mit For, da es entweder 1 oder 0 zurückgibt. 1= Ende der Datei erreicht 0= Ende nicht erreicht Wenn du die Werte später noch gespeichert brauchst, wirst du Dim  verwenden müssen. mfg Thunder Edit: zu spät. | ||
| Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit | ||
- Zuletzt bearbeitet von Thunder am Mo, Jan 25, 2010 22:08, insgesamt einmal bearbeitet
|   | XeresModerator |  Mo, Jan 25, 2010 22:04 Antworten mit Zitat   | 
|---|---|---|
| Code:  [AUSKLAPPEN] For i=0 To Eof(file) Dann schau dir in der OH nochmal an, welche Werte Eof zurückliefert. Zeilen sind das nicht! Es ginge... Code: [AUSKLAPPEN] Repeat
 Print(ReadLine(file)) Until Eof(file) | ||
| Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960 Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) | ||
|   | Thunder |  Mo, Jan 25, 2010 22:06 Antworten mit Zitat   | 
|---|---|---|
| sorry - falscher Button | ||
| Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit | ||
|   | Midimaster |  Mo, Jan 25, 2010 22:29 Antworten mit Zitat   | 
|---|---|---|
| ich empfehle mal das Datei-Lesen Tutorial: https://www.blitzforum.de/foru...hp?t=33651 und vielleicht noch das DIM-Tutorial: https://www.blitzforum.de/foru...048#354048 | ||
|   | beanage.johannes |  Di, Jan 26, 2010 16:32 Antworten mit Zitat   | 
|---|---|---|
| Ein while/wend loop eignet sich besser als repeat/until oder for/next | ||
|   | Xaymarehemals "Cgamer" |  Di, Jan 26, 2010 18:23 Antworten mit Zitat   | 
|---|---|---|
| Wo unterscheidet sich while/wend von repeat/until, außer das die abfrage ob die bedingung zutrifft beim ersten am anfang steht und beim zweiten am ende? | ||
| Warbseite | ||
|   | Chrise |  Di, Jan 26, 2010 18:24 Antworten mit Zitat   | 
|---|---|---|
| Cgamer hat Folgendes geschrieben: Wo unterscheidet sich while/wend von repeat/until, außer das die abfrage ob die bedingung zutrifft beim ersten am anfang steht und beim zweiten am ende? genau da ist de unterschied. Manchmal musst du am Ende der schleife wissen, ob eine bedingung erfüllt ist, damit die schleife beendet wird. Manchmal musst du wissen, ob eine schleife überhaupt erst beginnen soll. | ||
| Llama 1 Llama 2 Llama 3 Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet. | ||
|   | BladeRunnerModerator |  Di, Jan 26, 2010 18:29 Antworten mit Zitat   | 
|---|---|---|
| Das ist im Wesentlichen der Unterschied: Code: [AUSKLAPPEN] a=10 While a < 10 a = a+1 Print "while:"+a Wend b=10 Repeat b = b+1 Print "repeat:"+ b Until b>=10 WaitKey() Repeat wird mindestens einmal durchlaufen, while nicht unbedingt. | ||
| Zu Diensten, Bürger. Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 | ||
|   | Xaymarehemals "Cgamer" |  Di, Jan 26, 2010 18:33 Antworten mit Zitat   | 
|---|---|---|
| Gut zu wissen. Dann weiß ich jetzt auch warum mein Programm ständig crasht. | ||
| Warbseite | ||
Übersicht
 BlitzBasic
 BlitzBasic  Allgemein
 Allgemein
					Powered by phpBB © 2001 - 2006, phpBB Group
				



