Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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 ;)

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben
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.

Geschrieben

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

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...