Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: andrew22 am 13.06.05 - 15:01:33

Titel: Dateiinhalt in andere Datei etc.
Beitrag von: andrew22 am 13.06.05 - 15:01:33
hi ho

und noch ein Eintrag ;) ...

Ich habe 1 Datei wo Inhalt drin steht
BSP :

test1,
test2,
test3,

Ein agent öffnet die Datei liest mit while schleife Zeile für Zeile ein und soll Zeile für Zeile in eine Neue Datei schreiben und nach jeder Zeile diese dann aus der alten Datei löschen.

würd mich sehr über ein Bsp freuen

vielen dank

Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: Thomas Schulte am 13.06.05 - 15:06:46
Tschuldigung aber wozu?
Ich meine das mit der Zeile für Zeile löschen?
Wenn er auf der einen Seite ausgibt dann kann der doch auch die Ganze Datei am Ende der Verarbeitung löschen!
Davon abgesehen gibt es dafür soweit ich weiss keinen Befehl in Script.
Was den Rest des File Handlings angeht, schau in der Online Hilfe unter  LotusScriptLanguage FileHandling nach. Da findest du alle dazugehörenden Befehle und auch Beispiele dafür.
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: klaussal am 13.06.05 - 15:20:53
Schwachfug !
Warum kopieren, wenn am Ende in der Kopie das gleiche drinne steht wie im Original ?
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: ctillmanns am 13.06.05 - 15:48:47
Jetzt hackt doch nicht gleich auf dem armen Kerl rum.
Vielleicht liest er ja nicht die ganze Datei aus und macht auf dem Weg in die andere Datei noch was mit dem Text. Könnte ja sein?

Statt die Zeile zu löschen, was scheinbar wirklich nicht geht, könnte man ja auch mit Print eine Variant Variable die EMPTY ist nehmen und die Zeile überschreiben.
Ich würde allerdings alles was noch gebraucht wird in ein neues File schreiben und danach das alte löschen und das neue umbennen.
cti
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: andrew22 am 13.06.05 - 16:08:24
und wie mache ich das überschreiben nun ???

ein Bsp wäre sehr cool ...

Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: Thomas Schulte am 13.06.05 - 16:14:40
und wie mache ich das überschreiben nun ???

ein Bsp wäre sehr cool ...


zum Bleistift mit dem PUT Befehl. den du komplett Beschrieben in der Online Hilfe finden kannst.
Und wo du die findest solltest du eigentlich wissen.
Immer nur Code Beispiele leechen kommt hier nicht gut. Das Motto ist Hilfe zur Selbsthilfe und nicht ich frag mal und dann bekomm ich alles vorgekaut serviert.
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: Semeaphoros am 13.06.05 - 16:15:53
Ueberschreiben bei einer sequentiellen Datei ist nicht wirklich. Da ist das Umschreiben auf eine andere durchaus angesagt. Aber da wirst Du Dich wohl schon selber ein wenig in die Hilfe einknieen müssen. Hier die wesentlichen Befehle:

Open
Close
Print #
Write #
Input
Line Input
Filenum
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: Thomas Schulte am 13.06.05 - 16:18:16
Ueberschreiben bei einer sequentiellen Datei ist nicht wirklich.
Stimmt nicht wirklich die Aussage Jens.
hier das Beispiel dazu aus der Online Hilfe:
Type PersonRecord
   empNumber As Integer
   empName As String * 20
End Type
Dim fileNum As Integer
Dim fileName As String
Dim rec As PersonRecord
fileNum% = FreeFile()
fileName$ = "data.txt"
' First, open a random file with a record length equal to
' the size of the records to be stored.
Open fileName$ For Random As fileNum% Len = Len(rec)
rec.empNumber% = 123
rec.empName$ = "John Smith"
Put #fileNum%, 1, rec       ' Write this record at position 1.
rec.empNumber% = 456
rec.empName$ = "Jane Doe"
Put #fileNum%, 2, rec       ' Write this record at position 2.
rec.empNumber% = 789
rec.empName$ = "Jack Jones"
Put #fileNum%, , rec        ' Write at current position (3).
Seek fileNum%, 1            ' Rewind file to beginning.
Do While Not EOF(fileNum%)
   ' Get a record, print it out.
   ' Get advances the file position to the next
   ' record automatically.
   Get #fileNum%, , rec
   Print rec.empNumber%, rec.empName$
Loop
' Output:
' 123         John Smith
' 456         Jane Doe
' 789         Jack Jones 
Close fileNum%              ' Close the file.
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: andrew22 am 13.06.05 - 16:28:18
so mein code ;) der klappt aber nicht nicht ganz vielleicht habt Ihr ne Idee :

Code

pathname = "C:\temp\test.csv"

foutput = Freefile

While Not Eof(foutput)
Line Input #foutput, sTxt

finput = Freefile()
Open "C:\temp\neuedatei.csv" For Append As finput
Write #finput, sTxt
Closefinput
Open pathname For Random As fileNum%
test = ""
Put #fileNum%, ,test
WEnd

Close.foutput
Call stream.Close 




Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: Thomas Schulte am 13.06.05 - 16:34:51
Ideen hab ich dazu eine ganze Menge.
Ad 1. Falsche Reihenfolge der open Befehle. Wie willst du was wegschreiben wenn du die Datei aus der du lesen willst noch nicht einmal geöffnet hast.
Ad 2.  Es ist nett das du jedesmal deine Files auf machst. Kostet dich gut Performance und ist irgendwie überhaupt nicht effektiv.
Ad 3. Wenn man Daten wegschreibt sollte man sie vorher auch einlesen. Wo tust du das?

Ad 4. Ich hab den Eindruck du willst uns hier verschaukeln. Da ist noch nicht einmal der Ansatz einer sinnvollen Programmierung zu sehen. Das was du uns da hingeschmissen hast deutet auf ein nicht einmal rudimentäres Verständniss dessen was du da machst hin.

Hast du überhaupt Ahnung von Programmierung?

In IRGENDEINER Sprache?
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: Marinero Atlántico am 13.06.05 - 16:37:32
Ich tippe auch auf einen Fake-User.  ;D
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: Thomas Schulte am 13.06.05 - 16:38:52
Ich tippe auch auf einen Fake-User. ;D
Dann killt den bitte ganz schnell liebe Administratoren. Bevor der hier noch mehr wertvolle Zeit von anderen Leuten verschwendet.
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: andrew22 am 13.06.05 - 16:41:30
Es ist lange her das ich Notes gemacht .

mein eingangs script funktioniert doch tadellos :

Code
foutput = Freefile()

While Not Eof(foutput)

Line Input #foutput, sTxt

Print "Inhalt : " + sTxt

Wend

Close foutput

Call stream.Close


Jetzt ist es nur noch wichtig das ich das mit der 2ten Datei einfüge.

Sprich Neue Datei erstellen und Zeile für Zeile inhalt raußnehmen in neue Datei schreiben und Zeile für Zeile lösche.

Also Zeile aus alter Datei wird von Datenbank benutzt und danach in neue datei setzen und aus alter löschen.

Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: andrew22 am 13.06.05 - 16:42:58
Was soll das !!??

Ich habe lang kein Notes mehr gemacht okay und es hat sich einiges geändert.

ich dachte das hier ist ein FOrum wo man Hilfe bekommen kann also nutze ich diese auch ...

ich wollte mich eigentlich vor nichts verstecken !
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: Semeaphoros am 13.06.05 - 16:47:36
Ueberschreiben bei einer sequentiellen Datei ist nicht wirklich.
Stimmt nicht wirklich die Aussage Jens.


Aehm, sorry, Thomas, Open As Random ist kein sequentielles File, sondern - eben - random. Dieses File setzt fixe Recordlänge voraus.
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: koehlerbv am 13.06.05 - 17:11:53
Exakt. Und "löschen" kann man damit auch nicht. Und sequentiell schon gar nicht - man müsste jedes Mail ein korrigiertes File schreiben.

Was mir noch nicht ganz klar ist: Ich finde da in andrew22nds Code Hinweise auf die NotesStream class - was soll die in diesem Zusammenhang ?

Bernhard
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: andrew22 am 13.06.05 - 18:35:02
ich würde sagen die NotesStream klasse ist eigentlich nur für die Abfrage da ;)

das Dateienauslesen etc. läuft gar net über die NotesStream Klasse ..

wenn ich das richtig sehe
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: koehlerbv am 13.06.05 - 18:42:04
Eine DesignerHelp zum Nachlesen hast Du aber schon zu Hand, oder ?

Bernhard
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: andrew22 am 13.06.05 - 18:53:22
ja na sicher ;) ...

das klingt vielleicht doof aber bin halt ein wenig aus der übung :(

hab Notes lange net mehr gemacht

und da stell ich mich manchmal eben etwas doof an :( ...
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: umi am 14.06.05 - 09:11:45
Wieso brauchst Du gleichzeitig Stream und Freefile?
Kannst ja beider mit Streams machen.

Code
....
dim zeile as string
call instream.open(path)
call oustream.open(path)
while not instream.iseos
zeile = instream.readtext(STMREAD_LINE,EOL_PLATFORM)
'mach was mit zeile
call oustream.writetext(zeile,EOL_PLATFORM)
end while

Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: andrew22 am 14.06.05 - 12:00:06
ja klasse danke ;)

eigentlich bräuchte ich jetzt nur noch ne anweisung das nach schreiben in neue Datei die Zeile aus alter Datei gelöscht wird ;) ?!

thx
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: Axel am 15.06.05 - 14:59:12
Hi,

eigentlich sollte es dir, nach all den Hinweisen, inzwischen klar sein, dass du aus der Datei keine Zeile löschen kannst.

In diesem Thread (http://www.atnotes.de/index.php?topic=10960.0) hast du den Grund geschrieben, warum du das machen willst.

Ein Vorschlag von mir wäre jetzt der folgende: du merkst dir z.B. in einem Profildokument den Eintrag, den du gerade bearbeitet. Dann kannst du im Falle eines Falles den Eintrag aus dem Profildokument nehmen, dann die Einträge aus der Datei von Anfang an auslesen und mit dem gesicherten eintrag vergleichen. Sind sie gleich, fängst du ab dem nächsten wieder mit der Bearbeitung an.

Allerdings hat die Sache mehrere Haken, da du nicht weißt, wo und wann der Abbruch stattgefunden hat.

Wie Jens im anderen Thread schon geschrieben hat, wie lange dauert denn die Bearbeitung und kommt es so oft vor, dass die Sache abschmiert.

Meiner Ansicht nach bist du besser dran du vergißt den Stunt mit dem Löschen usw. und fängst bei einem Absturz noch mal von vorne an die Daten zu beaerbeiten.^


Axel
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: ctillmanns am 15.06.05 - 15:24:27
Hallo
Nein, diesmal nichts mit Tasten, obwohl es für Dein Problem vielleicht die schlaueste Lösung wäre, aber dafür soll man dann die homosapiens 0.1 verwenden.

Das wäre doch was für Jens. Wir machen uns ein Objekt in das man das ganze File erst mal als array einliest. Zeile für Zeile hübsch nacheinander.
Dann arbeitet man das Objekt ab und nach jeder Zeile sucht man sich den entsprechenden Datensatz im File und schreibt "löschen" dahinter.

Dann lassen wir ein zweites Programm laufen und laden uns wieder das Objekt und jetzt löschen wir alle Datensätze im Objekt mit "löschen" am Ende. Nun erstellen wir ein neues File und schreiben die nicht gelöschten Datensätze rein. Jetzt killen wir das erste File und speichern das zweite unter demselben Namen. Jetzt kann man den Import so oft man will ablaufen lassen, bis man diese 2.5 Sekunden schaft, während denen Notes gerade mal nicht abstürzt.

Oder man kann es auch einfach haben und einfach die Daten vergleichen die man schon importiert hat. Aber das wäre irgendwie nicht wissenschaftlich genug.

Man kann auch ein Log schreiben und da reinschreiben, bis zu welchem Datensatz man schon gekommen ist.

Ha, noch eine Idee, man vergleicht immer zwei Files, die einen sind schon importier, die stehen im zweiten File und werden bei weiteren Läufen ignoriert.

Löschen geht halt nun mal nicht, aber man könnte doch noch eben alles in Excel importieren und da kann man löschen von Notes aus, wenn ich mich nicht irre.
Cheerio
Tilsche
Titel: Re: Dateiinhalt in andere Datei etc.
Beitrag von: Semeaphoros am 15.06.05 - 15:57:32
 ;D ;D