Textfile *.txt Bearbeiten
Textfile *.txt Bearbeiten
Hallo,
habe mir aus dem CCleaner ein Textfile erstellt mit meinen installierten Programmen. Möche jetzt die Datei einlesen. Funktioniert nicht mit den angeführten Beispielen. Anscheinend ist das Trennzeichen ein anderes (TabStop).
Will diese *.txt in Still einer Datenbank(Zeile per Datensatz mit Button vor/zurück/Speichern etc.) bearbeiten, weiss jemand ein Beispiel oder tips, Danke.
Gruss .......... Velindos
habe mir aus dem CCleaner ein Textfile erstellt mit meinen installierten Programmen. Möche jetzt die Datei einlesen. Funktioniert nicht mit den angeführten Beispielen. Anscheinend ist das Trennzeichen ein anderes (TabStop).
Will diese *.txt in Still einer Datenbank(Zeile per Datensatz mit Button vor/zurück/Speichern etc.) bearbeiten, weiss jemand ein Beispiel oder tips, Danke.
Gruss .......... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Textfile *.txt Bearbeiten
hier ein kleiner Hack:
Ich habe mal quick'n dirty alle TAB (#TAB$) gegen LF (#LF$) ausgetauscht. Dann kann man die Zeilen
so wie sie sind aus dem Stand in ein ListIconGadget einfügen.
Hinweis 1: Die install.txt ist in UTF-16LE mit Signatur (BOM) gespeichert. Destawegen musst Du
#PB_Unicode als Extraparameter bei ReadString() mit angeben
Hinweis 2: Wenn Du die Felder selber auseinanderschnippeln willst, dann schau Dir mal
CountString() und StringField() an.
Grüße ... Kiffi
Code: Alles auswählen
EnableExplicit
#myWindow = 0
#myListIconGadget = 0
OpenWindow(#myWindow, #PB_Ignore, #PB_Ignore, 640, 480, "")
ListIconGadget(#myListIconGadget, 0, 0, 640, 480, "Deinstallierbare Programme", 100)
AddGadgetColumn(#myListIconGadget, 1, "Hersteller", 100)
AddGadgetColumn(#myListIconGadget, 2, "Installiert am", 100)
AddGadgetColumn(#myListIconGadget, 3, "Größe", 100)
AddGadgetColumn(#myListIconGadget, 4, "Version", 100)
Define Zeile.s
Define FF
Define Quit
Define WWE
FF = ReadFile(#PB_Any, "d:\install.txt") ; Pfad anpassen!
If FF
While Not Eof(FF)
Zeile = ReadString(FF, #PB_Unicode)
Zeile = ReplaceString(Zeile, #TAB$, #LF$)
AddGadgetItem(#myListIconGadget, -1, Zeile)
Wend
CloseFile(FF)
Else
Debug "install.txt konnte nicht geladen werden"
EndIf
Repeat
WWE = WaitWindowEvent()
Select WWE
Case #PB_Event_CloseWindow
Quit = #True
EndSelect
Until Quit = #True
so wie sie sind aus dem Stand in ein ListIconGadget einfügen.
Hinweis 1: Die install.txt ist in UTF-16LE mit Signatur (BOM) gespeichert. Destawegen musst Du
#PB_Unicode als Extraparameter bei ReadString() mit angeben
Hinweis 2: Wenn Du die Felder selber auseinanderschnippeln willst, dann schau Dir mal
CountString() und StringField() an.
Grüße ... Kiffi
a²+b²=mc²
Re: Textfile *.txt Bearbeiten
Hallo,
danke für deinen Vorschlag, der funktioniert!!!!!!!!!!!
Bin gerade beim Tüffteln wie ich die Sache mit meinen Vorstellungen übereinbringe und habe
gleich mit den Aufruf der Fenster zu tun, egal.
Um dir mein Problem zu schildern gebe ich mal den Code rein.
Werde dein Beispiel weiter studieren............
Gruss .................. Velindos
danke für deinen Vorschlag, der funktioniert!!!!!!!!!!!
Bin gerade beim Tüffteln wie ich die Sache mit meinen Vorstellungen übereinbringe und habe
gleich mit den Aufruf der Fenster zu tun, egal.
Um dir mein Problem zu schildern gebe ich mal den Code rein.
Code: Alles auswählen
; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
; Projekt:Install Forms zur Bearbeitung der install.txt
; Author: F.G.Maringer
; Date: 16-11-2010
; OS: Windows7-64Bit
; Demo: No
;IncludeFile "Windows1.pb"
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Text_0
#T_ID
#T_Software
#T_Hersteller
#T_Datum
#B_Exit
#B_Start
#B_Return
#B_Vor
#B_Ende
#B_Neu
#B_Find1
#B_Find2
#B_Lesen
#B_Schreiben
#B_Neu2
#B_Dateiladen
#B_DateiSpeichern
#B_DateiLoeschen
#B_DateiKopieren
#Text_11
#Text_2
#Text_3
#Text_4
#Text_5
#T_Umfang
#T_Version
#Frame3D_0
#B_OpenDatei
EndEnumeration
;Begin Proceduren ***************************************************
Procedure Open_Window_0()
If OpenWindow(#Window_0, 266, 29, 640, 480, "VelindosDATA", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
TextGadget(#Text_0, 60, 70, 75, 15, "Software")
StringGadget(#T_ID, 120, 260, 45, 25, "ID")
StringGadget(#T_Software, 150, 65, 250, 20, "Software")
StringGadget(#T_Hersteller, 150, 95, 250, 20, "Hersteller")
StringGadget(#T_Datum, 150, 130, 250, 20, "Datum")
ButtonGadget(#B_Exit, 415, 5, 40, 25, "Exit")
ButtonGadget(#B_Start, 45, 260, 30, 25, "|<")
ButtonGadget(#B_Return, 80, 260, 30, 25, "<")
ButtonGadget(#B_Vor, 170, 260, 30, 25, ">")
ButtonGadget(#B_Ende, 205, 260, 30, 25, ">|")
ButtonGadget(#B_Neu, 10, 70, 30, 175, ">||")
ButtonGadget(#B_Find1, 415, 55, 40, 25, "Find")
ButtonGadget(#B_Find2, 415, 210, 40, 25, "Find")
ButtonGadget(#B_Lesen, 315, 260, 60, 25, " Lesen")
ButtonGadget(#B_Schreiben, 380, 260, 65, 25, "Schreiben")
ButtonGadget(#B_Neu2, 245, 260, 60, 25, "Neu")
ButtonGadget(#B_Dateiladen, 85, 10, 55, 20, "Laden")
ButtonGadget(#B_DateiSpeichern, 145, 10, 60, 20, "Speichern")
ButtonGadget(#B_DateiLoeschen, 210, 10, 60, 20, "Löschen")
ButtonGadget(#B_DateiKopieren, 275, 10, 60, 20, "Kopieren")
TextGadget(#Text_11, 5, 10, 75, 15, "Velindos Datei")
TextGadget(#Text_2, 60, 100, 75, 15, "Hersteller")
TextGadget(#Text_3, 60, 135, 75, 15, "Datum")
TextGadget(#Text_4, 60, 175, 75, 15, "Umfang")
TextGadget(#Text_5, 60, 210, 75, 15, "Version")
StringGadget(#T_Umfang, 150, 170, 250, 20, "Umfang")
StringGadget(#T_Version, 150, 205, 250, 20, "Version")
Frame3DGadget(#Frame3D_0, 55, 50, 355, 185, "")
ButtonGadget(#B_OpenDatei, 340, 10, 60, 20, "OpenFile")
EndIf
EndIf
EndProcedure
Procedure OFile(file.s)
d=ReadFile(1, file)
If d
While Eof(1)=0
Text$ = Text$+ReadString(1)+Chr(13)+ Chr(10)
Wend
CloseFile(1)
SetGadgetText(2, Text$)
Else
MessageRequester("Error","No valid file was selected.",#MB_ICONERROR)
EndIf
EndProcedure
Procedure Open_Windows_2 ()
If OpenWindow(0, 100, 200, 495, 260, "Open Small Files Example", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
CreateGadgetList(WindowID(0))
ButtonGadget(1,210,20,80,25,"Open File")
StringGadget(2,10,60,480,185,"",#ES_MULTILINE | #ES_AUTOVSCROLL|#WS_VSCROLL|#WS_HSCROLL)
;TextGadget(2,10,60,480,185,"",#PB_Text_Border )
Repeat
EventID.l = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 1
file$ = OpenFileRequester("Open File","","All Files|*.*",1)
OFile(file$)
EndSelect
EndIf
Until Quit = 1
EndIf
End
; IDE Options = PureBasic v4.00 (Windows - x86)
; Folding = -
EndProcedure
;Datei Laden => B_Laden
Procedure Laden()
EndProcedure
;Datei Speichern => B_Speichern
Procedure Speichern()
EndProcedure
;Datei Löschen => B_Loeschen
Procedure Loeschen()
EndProcedure
;Datei Kopieren => B_Kopieren
Procedure Kopieren()
EndProcedure
;Datei Open => B_OpenDatei
Procedure OpenDatei()
EndProcedure
;Datensatz_Erster => B_Erster
Procedure DS_Erster()
EndProcedure
;Datensatz_Vor => B_Vor
Procedure DS_Vor()
EndProcedure
;Datensatz_Return => B_Return
Procedure DS_Return()
EndProcedure
;Datensatz_End => B_End
Procedure DS_End()
EndProcedure
;Datensatz_Neu => B_Neu
Procedure DS_Neu()
EndProcedure
;Datensatz_Lesen => B_Lesen
Procedure DS_Lesen()
EndProcedure
;Datensatz_Schreiben => B_Schreiben
Procedure DS_Schreiben()
EndProcedure
;Datensatz_Markieren => B_Marker
Procedure DS_Markieren()
EndProcedure
;Datensatz_Find1 => B_Find1
Procedure DS_Find1()
EndProcedure
;Datensatz_Find2 => B_Find2
Procedure DS_Find2()
EndProcedure
;Begin Hauptprogramm ***************************************************
Open_Window_0()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow: End
Case #PB_Event_Gadget
Select EventGadget()
Case #B_Dateiladen:Open_Windows_2()
Case #B_Exit: End
EndSelect
EndSelect
ForEver
;Ende Hauptprogramm ***************************************************
Gruss .................. Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Textfile *.txt Bearbeiten
kurze Frage zwischendurch: Was nützt Dir das Bearbeiten
dieser Datei? Die Daten können sich doch nur durch eine
Installation oder eine Deinstallation von Software ändern.
Grüße ... Kiffi
dieser Datei? Die Daten können sich doch nur durch eine
Installation oder eine Deinstallation von Software ändern.
Grüße ... Kiffi
a²+b²=mc²
Re: Textfile *.txt Bearbeiten
Hallo,
ist eine feine Sache zum lernen des Datei.txt handling unter PureBasic da ich Anfänger bin.
Möchte anhand dieses Beispiele die Software auslesen können und bearbeiten und in einer
getrennten Datei speichern.
Muss leider jetzt weg, wünsche noch einen schönen Abend und danke für deine Hilfe.
Gruss ............ Velindos
ist eine feine Sache zum lernen des Datei.txt handling unter PureBasic da ich Anfänger bin.
Möchte anhand dieses Beispiele die Software auslesen können und bearbeiten und in einer
getrennten Datei speichern.
Muss leider jetzt weg, wünsche noch einen schönen Abend und danke für deine Hilfe.
Gruss ............ Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Textfile *.txt Bearbeiten
Leider hat Kiffi vergessen das "ReadStringFormat()" mit einzubauen, auch wenn das Format bereits bekannt ist,
und sei es nur, das der Dateizeiger sich hinter den BOM bewegt.
Gruß
Thomas
und sei es nur, das der Dateizeiger sich hinter den BOM bewegt.
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Textfile *.txt Bearbeiten
ah, ja, danke für den Hinweis!ts-soft hat geschrieben:Leider hat Kiffi vergessen das "ReadStringFormat()" mit einzubauen, auch wenn das Format bereits bekannt ist,
und sei es nur, das der Dateizeiger sich hinter den BOM bewegt.
Grüße ... Kiffi
a²+b²=mc²
Re: Textfile *.txt Bearbeiten
Hallo Leute,
danke für eure ausgezeichnete Hilfe, komme mit "ReadStringFormat()" nicht ganz klar, überprüft ob Dateiposition einen BOM enthält, wie wendet man Sie an.
Also was habe ich gemacht, ich habe die Procedur von Kiffi in ein Beispiel von Bluespeed übernommen und assembliert. Jetzt kann ich Zeilenweise den String auf eine Variable geben.
Ich möchte jetzt die Datei bereits in Spalten und Zeilen in ein Array einlesen, gibt es dazu bereits Beispiele oder Übungen.
Wenn mir jemand helfen könnte, wäre ich ihm sehr verbunden. Als Denkansatz das aktuelle Beispiel:
Gruss .......... Velindos
danke für eure ausgezeichnete Hilfe, komme mit "ReadStringFormat()" nicht ganz klar, überprüft ob Dateiposition einen BOM enthält, wie wendet man Sie an.
Also was habe ich gemacht, ich habe die Procedur von Kiffi in ein Beispiel von Bluespeed übernommen und assembliert. Jetzt kann ich Zeilenweise den String auf eine Variable geben.
Ich möchte jetzt die Datei bereits in Spalten und Zeilen in ein Array einlesen, gibt es dazu bereits Beispiele oder Übungen.
Wenn mir jemand helfen könnte, wäre ich ihm sehr verbunden. Als Denkansatz das aktuelle Beispiel:
Code: Alles auswählen
;*********************************************************************************
;* $ Files einlesen *
;* Version 1.0.x *
;* Assembliert by Velindos *
;* 2010 *
;*********************************************************************************
; WICHTIG: Damit dieser Text angezeigt werden kann, muss install.txt auf C:\
; vorhanden sein, ist eine feine Sache zum lernen des Datei.txt Handling unter
; PureBasic da ich Anfänger bin. Möchte Anhand dieses Beispiele die Software
; auslesen können und bearbeiten und in einer getrennten Datei speichern.
; ReadFile(File,Ziel) genau wie OpenFile(), nur das wir die Datei diesmal nur lesen
; und anzeigen wollen und nicht erzeugen.
;
; Hinweis 1: Die install.txt ist in UTF-16LE mit Signatur (BOM) gespeichert.
; Destawegen musst Du #PB_Unicode als Extraparameter bei ReadString() mit angeben
Dim Ausgabe.s(999)
Define Zeile.s
Define FF
Define Quit
Define WWE
;Hinweis 2: Wenn Du die Felder selber auseinanderschnippeln willst,
;dann schau Dir mal CountString() und StringField() an.
;Text$ = ReadString(#Datei [, Flags]) => Liest einen String
;Ergebnis = ReadFile(#Datei, DateiName$) => Öffnet eine existierende Datei
;Ergebnis$ = StringField(String$, Index, Trennzeichen$) => Gibt den Feldinhalt
;Ergebnis = CountString(String$, StringToCount$) => Gibt die Anzahl zurück
;String$ = ReplaceString(String$, SuchString$, ErsatzString$ [, Modus [, StartPosition]]) =>Vorkommen des 'SuchString$'zu finden
;Ergebnis = ReadStringFormat(#Datei) =>Überprüft aktuelle Dateiposition ein BOM (Byte Order Mark) enthält
FF = ReadFile(#PB_Any, "c:\install.txt") ; Pfad anpassen!
If ReadFile(0,"C:\Install.txt") ; Wir öffnen die Datei pbtutorial.txt zum Lesen
;zeile$ = ReadString(0)
;Ausgabe(1) = ReadString(FF, #PB_Unicode)
Zeile = ReadString(FF, #PB_Unicode); Wir lesen die Zeichen auf Zeile
Ausgabe(1) = Zeile ;Geben Zeichen auf Array
Zeile = ReplaceString(Zeile, #TAB$, #LF$) ; Vorkommen des 'SuchString$'zu finden
Debug StringField(Zeile, 1, " ") ;Zeigen uns Debuger an
MessageRequester("Text","Text: "+Ausgabe(1),0) ; Nun zeigen wir die Zeichen an
CloseFile(0) ; Wir schließen die Datei. Was jedoch nicht unbedingt
; sein muss, da PB sie auch automatisch schließt.
Else ; Wenn die Datei nicht gefunden wurde
MessageRequester("Fehler","Konnte die Datei nicht öffnen.",0) ; Fehlermeldung
EndIf ; Ende der Abfrage
; ReadString() ist dazu da, um die verschiedenen Zeichen einer Zeile in der Datei zu
; lesen. Buchstaben und Sonderzeichen werden hier einfach allgemein Zeichen genannt.
; Ich glaube, dass es für einen Einstieg in die File Library reicht, man kann das ganze
; noch mit der FileSytem Library erweitern.
; Cu
; Bluespeed
; 05. Juli 2003: Überarbeitete Sprache und Layout by André Beer - exklusiv für www.purearea.net
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Textfile *.txt Bearbeiten
Hallo,
habe ein Problem mit der Funktion "StringField". Kann den String nicht richtig zerlegen.
Wenn ich statt 2, 3 eingebe schneidet er nicht richtig ab.
String => ?7-Zip 4.65 (x64 edition) Igor Pavlov 16.08.2010 3,99MB 4.65.00.0
Anzeige ist einmal "?7-Zip" oder "(x64")!
Das ist nicht im Sinne des Erfinder. Komisch im ListIconGadget funkt das, unklar.
Gruss ................ Velindos
habe ein Problem mit der Funktion "StringField". Kann den String nicht richtig zerlegen.
Wenn ich statt 2, 3 eingebe schneidet er nicht richtig ab.
String => ?7-Zip 4.65 (x64 edition) Igor Pavlov 16.08.2010 3,99MB 4.65.00.0
Anzeige ist einmal "?7-Zip" oder "(x64")!
Das ist nicht im Sinne des Erfinder. Komisch im ListIconGadget funkt das, unklar.
Gruss ................ Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Textfile *.txt Bearbeiten
StringField() arbeitet genau so, wie sich der Erfinder das vorgestellt hat.Velindos hat geschrieben:Das ist nicht im Sinne des Erfinder.
Wenn Du den String aus der Datei einliest, sieht er sinngemäß so aus:
Feld1[TAB]Feld2[TAB]Feld3[TAB]...
(wobei [TAB] für das Tabulatorzeichen (Chr(9) oder in PB: #TAB$) steht und den Delimiter darstellt)
Nun schau Dir noch einmal Deinen Aufruf an und lenke Deine Aufmerksamkeit
auf den von Dir angegebenen Delimiter.
Grüße ... Kiffi
a²+b²=mc²