Textdateien zusammenfassen, wie geht das bitte?
Textdateien zusammenfassen, wie geht das bitte?
Hallo, guten tag.
Ich habe in einen Ordner Textdateien, manchmal 3 oder auch 5.
Nun möchte ich die Textdateien hintereinander einlesen , damit es eine Textdatei wird.
Wie geht das bitte?
Alle Textdateien im Ordner finden mit der Endung .txt und dann zusammenführen bitte.
Danke.
Gruss
Ich habe in einen Ordner Textdateien, manchmal 3 oder auch 5.
Nun möchte ich die Textdateien hintereinander einlesen , damit es eine Textdatei wird.
Wie geht das bitte?
Alle Textdateien im Ordner finden mit der Endung .txt und dann zusammenführen bitte.
Danke.
Gruss
Re: Textdateien zusammenfassen, wie geht das bitte?
In meinem Beispiel werden alle drei Textdateien (es können auch binäre Dateien sein) eingelesen und den Inhalt aller drei Dateien wird in eine zusammengefasste Datei geschrieben:
\\Edit:
FreeMemory wurde hinzugefügt.
Code: Alles auswählen
EnableExplicit
Define FileLength
Define *FileMemory
If CreateFile(0, "D:\textfull.txt")
If ReadFile(1, "D:\text1.txt")
FileLength = Lof(1)
*FileMemory = AllocateMemory(FileLength)
ReadData(1, *FileMemory, FileLength)
WriteData(0, *FileMemory, FileLength)
CloseFile(1)
FreeMemory(*FileMemory)
EndIf
If ReadFile(1, "D:\text2.txt")
FileLength = Lof(1)
*FileMemory = AllocateMemory(FileLength)
ReadData(1, *FileMemory, FileLength)
WriteData(0, *FileMemory, FileLength)
CloseFile(1)
FreeMemory(*FileMemory)
EndIf
If ReadFile(1, "D:\text3.txt")
FileLength = Lof(1)
*FileMemory = AllocateMemory(FileLength)
ReadData(1, *FileMemory, FileLength)
WriteData(0, *FileMemory, FileLength)
CloseFile(1)
FreeMemory(*FileMemory)
EndIf
CloseFile(0)
EndIf
FreeMemory wurde hinzugefügt.
Re: Textdateien zusammenfassen, wie geht das bitte?
RSBasic war schneller
hat aber ein Speicherleck... FreeMemory vergessen.
Hatte etwas Langeweile.
[/size]
hat aber ein Speicherleck... FreeMemory vergessen.
Hatte etwas Langeweile.
Code: Alles auswählen
;-TOP
; -------------------------------------------------------------------
Procedure OpenTextFiles(List Files.s())
Protected file.s
ClearList(Files())
file = OpenFileRequester("Textfiles", "", "TXT|*.txt", 0, #PB_Requester_MultiSelection)
While Bool(file)
AddElement(Files())
Files() = file
file = NextSelectedFileName()
Wend
ProcedureReturn ListSize(Files())
EndProcedure
; -------------------------------------------------------------------
Procedure PackTextFiles(List Files.s(), SaveFile.s)
Protected desc.i, source.i, size, *buffer
desc = CreateFile(#PB_Any, SaveFile)
If desc
ForEach Files()
source = ReadFile(#PB_Any, Files())
If source
size = Lof(source)
If size
*buffer = AllocateMemory(size)
ReadData(source, *buffer, size)
WriteData(desc, *buffer, size)
FreeMemory(*buffer)
EndIf
CloseFile(source)
Else
Debug "Error: ReadFile " + Files()
EndIf
Next
CloseFile(desc)
Else
Debug "Error: CreateFile " + SaveFile
EndIf
EndProcedure
; -------------------------------------------------------------------
Define NewList files.s()
Define save.s
If OpenTextFiles(files())
save = SaveFileRequester("Save to", "", "", 0)
If Bool(save)
Debug save
PackTextFiles(files(), save)
EndIf
EndIf
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Textdateien zusammenfassen, wie geht das bitte?
@mk-soft
Dann war ich wohl zu schnell. Sorry, FreeMemory() darf natürlich nicht fehlen. Habs hinzugefügt.
Dann war ich wohl zu schnell. Sorry, FreeMemory() darf natürlich nicht fehlen. Habs hinzugefügt.
Re: Textdateien zusammenfassen, wie geht das bitte?
Danke für die schnelle Hilfe.
Wenn ich einen 2. Datei anklicke und speichere , ist die 1. Datei verschwunden in der sammel.txt
Wie kann man es bitte machen, das die Dateien hier im Progamm immer die Datei dranhängen und nicht die 1. löschen?
Danke.
Gruss
Wenn ich einen 2. Datei anklicke und speichere , ist die 1. Datei verschwunden in der sammel.txt
Wie kann man es bitte machen, das die Dateien hier im Progamm immer die Datei dranhängen und nicht die 1. löschen?
Danke.
Gruss
Re: Textdateien zusammenfassen, wie geht das bitte?
Die Datei, die Du erweitern möchtest, musst du natürlich immer als erstes öffnen.
PureBasic 6.10 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom
Re: Textdateien zusammenfassen, wie geht das bitte?
Was heißt "anklicken"?
Wenn du eine bereits vorhandene Datei mit PB öffnest und du möchtest einen weiteren Text hinzufügen, ohne den vorherigen Inhalt zu überschreiben, kannst du mit FileSeek(Lof(#DeineDatei)) arbeiten.
Wenn du eine bereits vorhandene Datei mit PB öffnest und du möchtest einen weiteren Text hinzufügen, ohne den vorherigen Inhalt zu überschreiben, kannst du mit FileSeek(Lof(#DeineDatei)) arbeiten.
- juergenkulow
- Beiträge: 188
- Registriert: 22.12.2016 12:49
- Wohnort: :D_üsseldorf-Wersten
Re: Textdateien zusammenfassen, wie geht das bitte?
Hallo funkheld,
ich habe mich um die Listen und Proceduren gedrückt:
Das Progrämmchen kann man bei Bedarf noch mit einem DeleteFile(Dateiname) ergänzen, nach WirteData.
Gruß
Edit if -1<>FileSize(ZielDateiname) ...
ich habe mich um die Listen und Proceduren gedrückt:
Code: Alles auswählen
; Mehrere Dateien zu einer Datei zusammenfassen.
Dateiname.s=OpenFileRequester("Bitte alle Dateien zum Laden auswählen:","",
"Text (*.txt)|*.txt|Alle Dateien (*.*)|*.*",0,#PB_Requester_MultiSelection)
ZielDateiname.s=SaveFileRequester("Bitte Datei zum Speichern angeben:","","Text (*.txt)|*.txt|Alle Dateien (*.*)|*.*",0)
If 0=FindString(ZielDateiname,".") : ZielDateiname+".TXT" : EndIf
If -1<>FileSize(ZielDateiname) : MessageRequester("FATAL",ZielDateiname+" ist bereits vorhanden.") : End : EndIf
SpeicherDatei=CreateFile(#PB_Any,ZielDateiname)
If 0=SpeicherDatei : MessageRequester("FATAL",ZielDateiname+" konnte nicht erstellt werden.") : End : EndIf
While Dateiname<>""
LeseDatei=ReadFile(#PB_Any,Dateiname)
If 0=LeseDatei : MessageRequester("FATAL",Dateiname+" konnte nicht gelesen werden.") : End :EndIf
Laenge=Lof(LeseDatei)
*p=AllocateMemory(Laenge)
If Laenge<>ReadData(LeseDatei,*p,Laenge)
MessageRequester("INFO",Dateiname+" konnte nicht vollständig gelesen werden.")
EndIf
CloseFile(LeseDatei)
If Laenge<>WriteData(SpeicherDatei,*p,Laenge)
MessageRequester("FATAL",Dateiname+" konnte nicht vollständig geschrieben werden.")
End
EndIf
FreeMemory(*p)
Dateiname = NextSelectedFileName()
Wend
CloseFile(SpeicherDatei)
Gruß
Edit if -1<>FileSize(ZielDateiname) ...
Zuletzt geändert von juergenkulow am 13.10.2018 17:57, insgesamt 1-mal geändert.
Bitte stelle Deine Fragen, denn den Erkenntnisapparat einschalten entscheidet über das einzig bekannte Leben im Universum.
Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum
Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum
Re: Textdateien zusammenfassen, wie geht das bitte?
Danke für eure Hilfe.
Werde ich jetzt mal zusammenführen.
Gruss
Werde ich jetzt mal zusammenführen.
Gruss
- juergenkulow
- Beiträge: 188
- Registriert: 22.12.2016 12:49
- Wohnort: :D_üsseldorf-Wersten
Re: Textdateien zusammenfassen, wie geht das bitte?
Hallo,
es geht auch einfach mit der cmd.exe:
oder
es geht auch einfach mit der cmd.exe:
Code: Alles auswählen
copy Quelle1.txt+Quelle2.txt+Quelle3.txt Ziel.txt
Code: Alles auswählen
copy Quelle*.txt Ziel.txt