Gast Geschrieben 5. April 2001 Geschrieben 5. April 2001 Ich habe nen kleines Problem und zwar : Ich möchte gerne in einer Ascii-Datei an bestimmten Positionen GANZE Zeilen änder oder löschen [aber so das die Zeile verschwindet und nicht leer ist]. Ich bastel schon seit einiger Zeit herum bekomme aber kein wirklich gutes Ergebniss. Also wenn einer von Euch ne Idee hat wie man das oben genannte Problem schnell und einfach lösen kann ... immer her damit. Cya [in][hELL]rIPPR Zitieren
Nobody Geschrieben 5. April 2001 Geschrieben 5. April 2001 Wie wäre es mit datei auslesen, zeilenweise in ne Listbox, Item löschen, Listbox zurückschreiben. Kommt auf die Grösse der Datei an, in wiefern das Sinn macht. Zitieren
E-Sorcerer Geschrieben 5. April 2001 Geschrieben 5. April 2001 Hi, wie liest Du die Datei denn ein? wahrscheinlich doch mit einer Schleife so in der Art: Do until EOF line input ... loop oder so ähnlich ja? Also ich würd' einfach mal probieren das Ganze in ein Feld zu schreiben. Du liest die Zeile ein, prüfst ob du sie ändern willst oder löschen, wenn löschen dann schreibst du sie einfach nicht in das Array. Am Schluß würde ich das Array dann einfach wieder zurück in die Datei schreiben. Hoffe das hilft dir weiter. C Ya Zitieren
Nobody Geschrieben 5. April 2001 Geschrieben 5. April 2001 Frage (komme eher aus dem C++Umfeld) : Unterstützt VB so einfach dynamische Arrays. Die wären hier notwendig, oder. In C++ ist sowas ne ganz schöne Knuffelei bis das funzt Zitieren
Gast Geschrieben 5. April 2001 Geschrieben 5. April 2001 Also, die richtige Position für den Datenzeigen kann ich schon einmal ermitteln ... nun fehlt mir nur noch so eine Art "ReWrite" oder "Überschreib" Befehl ... Gibt es denn keine Möglichkeit ????? :-( Cya [in][hELL]rIPPER Zitieren
E-Sorcerer Geschrieben 5. April 2001 Geschrieben 5. April 2001 Hi, @Nobody: Natürlich gibt es in Vb dynamische Arrays. Und zwar funktioniert das da wesentlich einfacher als in C++. Du definierst das Array einfach so: dim Feld() as Variablentyp Schon hast du ein dynamisches Array mit dem Namen Feld. Wenn Du es nun nutzen willst mußt Du vorher eine Redefinition durchführen, das sieht dann so aus. Redim Feld(i) -> i legt hierbei die Anzahl der Elemente fest die das Array nun hat. In den meisten Fällen macht es Sinn die vorher im Array gespeicherten Werte zu erhalten wenn man das array erweitert, das geht dann folgendermaßen: Redim Preserve Feld(i) -> mit der Syntax kann man ein dynakmische sarray erwietern ohne das die darin stehenden Werte verlorengehen. Zurück zum eigentlichen Problem: Wie gesagt ich würde beim Einlesen der jeweiligen Zeile prüfen ob Sie verändert werden muß oder vielleicht sogar gelöscht werden soll. Wenn Du sie geändert hast schreibst du sie in das Array (das Du vorher natürlich um ein Element erweitern mußt!) und liest die nächste Zeile ein. Wenn Du die jeweilige Zeile löschen willst schreibst du sie einfach nicht in das array sondern liest einfach direkt die nächste Zeile ein. Am Schluß liest Du dann das Array aus und schreibst die Daten in die Datei zurück. Je nach Größe der Datei kannst du auch an Stelle eines Arrays eine Zwischendatei mit den Dten füllen und dann am Schluß die Eingabedatei durch die Zwischendatei ersetzen. Bye Zitieren
jougli Geschrieben 5. April 2001 Geschrieben 5. April 2001 Original erstellt von hELLrIPPER: <STRONG>Also, die richtige Position für den Datenzeigen kann ich schon einmal ermitteln ... nun fehlt mir nur noch so eine Art "ReWrite" oder "Überschreib" Befehl ... Gibt es denn keine Möglichkeit ????? :-( Cya [in][hELL]rIPPER</STRONG> Wie liest Du die Daten den aus? Sequentiell? "Open "C:\datei" for Input as #1" Dann kannst Du die Datei z.B. anstatt mit FOR INPUT einfach mit FOR RANDOM öffnen. Hier kannst Du lesen, schreiben und ändern, oder FOR BINARY hier kannst Du Lesen und Hinzufügen an einer belibigen Position. Zitieren
Gast Geschrieben 5. April 2001 Geschrieben 5. April 2001 Ja das mit dem positionieren klappt ja auch ... aber mit dem ÜBERSCHREIBEN oder LÖSCHEN ... Wenn ich auf der zu ersetzenden Zeile einen neuen String einfüge, wird der alte nur aufgeschoben. Cya [in][hELL]rIPPER Zitieren
Gast Geschrieben 5. April 2001 Geschrieben 5. April 2001 Ahhhhh .... Danke Leute .... Ich habe jetzt einfach den ganzen Rotz in ein var. Array geschoben, das dann wiederum in eine Datei geschrieben ... die Datei dann erneut geöffnet und den Inhalt dem Array wieder zu gewiesen ... hehe ... Coooole Sache Danke Cya [in][hELL]rIPPER Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.