Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Don Pasquale am 11.09.03 - 11:38:09

Titel: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: Don Pasquale am 11.09.03 - 11:38:09

Hi Folks,
ich möchte eine Datei öffnen, sie um die 2. und 3. Zeile kürzen und dann in eine andere Datei wegschreiben.

Ich habe Probleme mit dem

fileNum1 = Freefile()
fileNum2 = Freefile()

Die Werte für fileNum1 und fileNum2 sind beide 1 onwohl
der für fileNum2 eigentlich 2 sein müßte.

Jemand eine Idee ?
Ciao
Don Pasquale




      Dim sFile As String ' SOURCE
      Dim dFile As String ' DESTINATION
      
      
      Dim sRow() As String
      Dim sTxt As String
      Dim fileNum1 As Integer
      Dim fileNum2 As Integer
      Dim counter As Integer
      
        ' # Die Datei zuweisen und öffnen...
      sFile =    cPath &          nDoc.UniversalID & ".xml"   
      dFile =    cPath & "__" & nDoc.UniversalID & ".xml"   
      
      fileNum1 = Freefile()
      fileNum2 = Freefile()
      
      Open sFile For Input As fileNum1
      Open dFile For Output As fileNum2
      
        ' # ... zeilenweise einlesen
      counter = -1
      Do While Not Eof( fileNum1 ) ' # ... EOF = End Of File
         Line Input #fileNum1, sTxt
         counter = counter + 1
         Redim Preserve sRow( 0 To counter )
         sRow( counter ) = sTxt
         
         If ( counter <> 2 Or counter <> 3  ) Then
            Print #fileNum2 , sRow( counter )
         End If
      Loop   
           ' # ... das Array weiterverarbeiten...
      
        ' # Die Datei wieder schließen...
      Close fileNum1
      Close fileNum2
      
   Wend
Titel: Re:Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: ata am 11.09.03 - 11:44:23
... bestimme die Laufzahl manuell, indem du eine fixe Zahl vergibst - ist zwar nicht ganz sauber, aber hilft zuweilen

ata
Titel: Re:Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: koehlerbv am 11.09.03 - 11:51:18
FileNum muß ja auch immer den gleichen Wert ergeben, da danach kein File geöffnet (und damit belegt) wird.
Versuch' mal, nach FreeFile gleich das Open folgen zu lassen.

Bernhard
Titel: Re:Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: ata am 11.09.03 - 11:55:42
... da habe ich gar nicht darauf geachtet...

... ich verwende Freefile eigentlich nur, wenn ich mehrere Files in einer Schlaufe öffnen muß...

ata
Titel: Re:Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: Don Pasquale am 11.09.03 - 12:18:31

@koehlerbv
BINGO !

Anton und Bernhard :

Herzlichen Dank

Ciao
Don Paquale


Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: andrew22 am 14.06.05 - 12:27:12
Was jetzt noch cool wäre wenn man aus der Source Datei jede Zeile raußnimmt .

sprich in der schleife nachdem in neue Datei die Zeile geschrieben ist -> diese Zeile aus Source ( alter Datei löschen ) ?!  ;)  ???
Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: Semeaphoros am 14.06.05 - 12:45:54
Manomann, das hatten wir Dir jetzt schon mehrfach gesagt: Das geht bei sequentiellen Files nicht.
Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: andrew22 am 14.06.05 - 14:17:52
und wie wäre ein Beispiele bei einer Random Datei ?  ???  ;)
Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: koehlerbv am 14.06.05 - 14:30:59
Auch das wurde bereits erläutert - diese erfordern fixed length records und diese lassen sich dann bestenfalls überschreiben, aber nicht löschen.

Sag doch lieber mal an, was Du da überhaupt anstellen willst. Vielleicht findet sich dann eher eine Lösung als bei diesem Herumstochern.

Bernhard
Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: andrew22 am 14.06.05 - 16:08:13
nun ja man könnte ja die zeile überschreiben mit nichts sozusagen so das sie leer ist ..

Ich habe eine Datei. Die Daten werden Zeile für Zeile ausgelesen und in einem Agent Zeile nach Zeile verarbeitet.

Sprich : 1. Zeile wird ausgelesen , dann verarbeitet , dann in neue datei geschrieben . So das klappt alles jetzt müßte eigentlich nur noch zum schluss die Zeile in der alten datei gelöscht werden oder überschrieben werden mit "Nichts" sozusagen sprich nachdem zeile in neue datei geschrieben wurde zeile in alter datei überschreiben / löschen .

Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: koehlerbv am 14.06.05 - 16:48:56
Ich gebe es auf ...
Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: littleS am 15.06.05 - 09:32:51
Hi,

also wenn Datei1 dein Original ist und Datei2, das Ergebnis deines Agenten, dann laß den Agenten doch noch eine Datei3 erstellen, in dem du nur die Zeilen aus Datei1 nimmst, die erhalten bleiben sollen, und lösche zum Schluß Datei1 und benenne Datei3 in Datei1 um.
Oder wenn du weißt das alles aus Datei1 gelöscht werden soll, dann lösch sie, sobald dein Agent fertig ist.

s.
Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: Axel am 15.06.05 - 09:56:32
Sprich : 1. Zeile wird ausgelesen , dann verarbeitet , dann in neue datei geschrieben . So das klappt alles jetzt müßte eigentlich nur noch zum schluss die Zeile in der alten datei gelöscht werden oder überschrieben werden mit "Nichts" sozusagen sprich nachdem zeile in neue datei geschrieben wurde zeile in alter datei überschreiben / löschen .

Hi,

ich verstehe immer noch nicht, warum die verarbeitete Zeile aus Datei1 gelöscht werden soll. Erklär das mal genauer.

Es gibt eine einfache Lösung für das Problem: da der Agent die alle Zeilen in Datei1 verarbeitet, dann lösch doch einfach die Datei nach Abarbeitung aller Zeilen.


Axel
 
Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: andrew22 am 15.06.05 - 13:37:13
also der Hintergrund ist der : In der Datei stehen z.B. 1000 Telnummern drin die in Datenbank per Agent eingelesen werden sollen.

Wenn nun sagen wir mal nach dem 500ersten Datensatz etwas abkackt und man von vorn anfangen muss wäre es doch blöd erst die ersten 500 Datensätze die schon in Datenbank sind nochmal einzufügen .

man könnte also jede Zeile nach und nach raußlöschen.

das ist der Hintergrund..

so ist halt die Anfrage und der Wunsch das es so läuft ...

Tips und Tricks freu ich mich drüber
Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: Semeaphoros am 15.06.05 - 13:51:57
a) wie gross ist denn die Chance, dass etwas schief läuft?
b) wie lange gurgelt denn das Ding an der Handvoll Datensätze?
Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: Axel am 15.06.05 - 14:47:31
Hi,

das Ganze bezieht sich doch auf diesen Thread (http://www.atnotes.de/index.php?topic=23515.0), oder?

Meines Erachtens sollte die Diskussion dort weitergeführt werden. DEshalb findest du meine Antwort dort.


Axel
Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: Alperen15 am 25.05.10 - 13:24:07
wie sieht es aus, wenn ich z.b 3 textdateie habe und nur jeweils die erste zweile auslesen möchte? vllt als kontrolle für mich, die ausgabe per msgbox ? wie sieht der quelltext aus ?
Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: Peter Klett am 25.05.10 - 14:10:14
Schau Dir mal das Beispiel in der Hilfe zu Line Input an, dann bekommst Du den Rest auch hin.
Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: Alperen15 am 25.05.10 - 14:27:40
Sub Initialize
   
   Dim filename As String
   Dim PathFilename As String
   Dim filenum As Integer
   Dim i As String
   
   PathName$ = "E:\TestKUR\Attachements\*.txt"
   Filename$ = Dir$(PathName$, 0)
   
   Do While Filename$ <> ""
      If  Isempty(Filename$) Then
         Exit Sub
      End If     
      Msgbox Filename$
      
      'lese erste zeile
      Open Filename$ For Input As filenum
      Seek fileNum,1   
      Line Input #filenum, i
      
      Filename$ = Dir$()
   Loop
End Sub

jetzt hab ich es so, da kommt eine fehlermeldung --> illegal Filenumber ..... wieso ist es nicht gültig?
Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: Peter Klett am 25.05.10 - 15:18:07
Du solltest die Datei nach dem Einlesen auch wieder schließen (Close #filenum)
Titel: Re: Datei1 einlesen bearbeiten , Datei 2 schreiben
Beitrag von: Axel am 25.05.10 - 19:05:01
Das gehört doch mit Sicherheit zu diesem Posting (http://atnotes.de/index.php/topic,41952.msg312531.html#msg312531). Oder liege ich da falsch ?

Bitte nicht alte Threads wieder aufwärmen. Erstelle lieber ein neues und wenn notwendig füge einen Link auf das entsprechende Posting ein. Bitte auch nur in dem, der Version mit der du arbeitest, entsprechenden Forum posten.

Danke.

Axel