Ein paar Fehler hab ich beseitigt, aber solange der Code mit so Neandertalersprüngen (Gosub) funktioniert, mag
Code: Alles auswählen
;*********************************************************************************
;* >>> DateiLesenZeile-9.pb <<< *
;* Version 1.0.x *
;* Assembliert by Velindos *
;* 2010-11-17 *
;;*********************************************************************************
; 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 ************************************************************************
; 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.
EnableExplicit
Global ZZ
ZZ.i=0
Define ZZS.s = "0"
Define Spalte0.i
Define Spalte0= 0
Define Spalte1.i
Define Spalte2.i
Define Spalte3.i
Define Spalte4.i
Enumeration ; Fenster
#Window_0
#Window_1
EndEnumeration
;- Gadget Constants
;
Enumeration
#myListIconGadget = 0
#String_0
#String_1
#String_2
#String_3
#String_4
#String_5
#Text_0
#Text_1
#Text_2
#Text_3
#Text_4
#Text_5
#Button_Exit
#Button_Wait
#Button_Anzeigen
#Spalte1
#Spalte2
#Spalte3
#Spalte4
#Spalte5
EndEnumeration
Dim Ausgabe.s(999)
Define Zeile.s
Define Dateiname1.s
Define Dateiname2.s
Dim T_ID.s(999)
Dim T_Aktuell.s(999) ;Hilfszeiger
Dim T_Software.s(999)
Dim T_Hersteller.s(999)
Dim T_Datum.s(999)
Dim T_Umfang.s(999)
Dim T_Version.s(999)
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
Dateiname1= "c:\install.txt"
Dateiname2 = "C:\Install_Revision.txt"
Begin:
OpenWindow(#Window_0, 220, 0, 640, 480, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
;ListIconGadget(#myListIconGadget,0, 220, 680, 260, "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)
StringGadget(#String_0, 5, 200, 35, 25, "ID")
StringGadget(#String_1, 45, 200, 200, 25, "Software")
StringGadget(#String_2, 250, 200, 140, 25, "Hersteller")
StringGadget(#String_3, 395, 200, 75, 25, "Datum")
StringGadget(#String_4, 475, 200, 75, 25, "Umfang")
StringGadget(#String_5, 555, 200, 75, 25, "Version")
TextGadget(#Text_0, 5, 185, 15, 15, "ID")
TextGadget(#Text_1, 45, 185, 80, 15, "Software")
TextGadget(#Text_2, 250, 185, 80, 15, "Hersteller")
TextGadget(#Text_3, 555, 185, 45, 15, "Version")
TextGadget(#Text_4, 475, 185, 45, 15, "Umfang")
TextGadget(#Text_5, 395, 185, 45, 15, "Datum")
ButtonGadget(#Button_Exit, 570, 15, 55, 30, "Exit")
ButtonGadget(#Button_Wait, 10, 15, 85, 30, "Datei Lesen")
ButtonGadget(#Button_Anzeigen, 110, 15, 85, 30, "Datei Anzeigen")
;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)
;Begin Hauptprogramm ***************************************************
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Window_0 : End
Case #Window_1 : CloseWindow(#Window_1)
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case #Button_Wait:
SetActiveWindow(#Window_0)
Gosub Dateiholen
Case #Button_Anzeigen
Gosub Kiffi
SetActiveWindow(#Window_1) ; Frame 2
Case #Button_Exit: End
EndSelect
EndSelect
ForEver
; 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
Dateiholen:
FF = ReadFile(#PB_Any, Dateiname1) ; Pfad anpassen!
ZZ=0
;If ReadFile(0,"C:\Install.txt") ; Wir öffnen die Datei pbtutorial.txt zum Lesen
If FF
While Not Eof(FF)
Zeile = ReadString(FF, #PB_Unicode); Wir lesen die Zeichen auf Zeile
Ausgabe(1)= StringField(Zeile, 1, #TAB$) ;Software
Ausgabe(2)= StringField(Zeile, 2, #TAB$) ;Hersteller
Ausgabe(3)= StringField(Zeile, 3, #TAB$) ;Datum
Ausgabe(4)= StringField(Zeile, 4, #TAB$) ;Umfang
Ausgabe(5)= StringField(Zeile, 5, #TAB$) ;Version
ZZS = Str(ZZ)
StringGadget(#String_0, 5, 200, 35, 25, ZZS)
StringGadget(#String_1, 45, 200, 200, 25, Ausgabe(1))
StringGadget(#String_2, 250, 200, 140, 25, Ausgabe(2))
StringGadget(#String_3, 395, 200, 75, 25, Ausgabe(3))
StringGadget(#String_4, 475, 200, 75, 25, Ausgabe(4))
StringGadget(#String_5, 555, 200, 75, 25, Ausgabe(5))
Zeile = ReplaceString(Zeile, #TAB$, #LF$) ; Vorkommen des 'SuchString$'zu finden
AddGadgetItem(#myListIconGadget, -1, Zeile)
;Debugen
Debug StringField(Zeile, 1, " ") ;Zeigen uns Debuger an
Debug StringField(Zeile, 3, " ") ;Zeigen uns Debuger an
;Delay(3000); Wartet 3 Sekunden is a Thread
ZZ = ZZ+1
;MessageRequester("Text","Text: "+Ausgabe(1),0) ; Nun zeigen wir die Zeichen an
Wend
CloseFile(FF)
Else
; sein muss, da PB sie auch automatisch schließt.
Debug "install.txt konnte nicht geladen werden"
MessageRequester("Fehler","Konnte die Datei nicht öffnen.",0) ; Fehlermeldung
EndIf ; Ende der Abfrage
Return
Kiffi:
Define Format
If OpenWindow(#Window_1, #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)
FF = ReadFile(#PB_Any, Dateiname1) ; Pfad anpassen!
If FF
Format = ReadStringFormat(FF)
If Format <> #PB_UTF8 Or Format <> #PB_Unicode ; nicht unterstütze Formate als Ascii behandeln
Format = #PB_Ascii
EndIf
While Not Eof(FF)
Zeile = ReadString(FF, Format)
Zeile = ReplaceString(Zeile, #TAB$, #LF$)
Debug StringField(Zeile, 1, " ")
AddGadgetItem(#myListIconGadget, -1, Zeile)
Wend
CloseFile(FF)
Else
Debug "install.txt konnte nicht geladen werden"
EndIf
Else
EndIf
Return