Seite 1 von 2
Purebasic mein erster Versuch
Verfasst: 04.01.2010 07:03
von ToolBoy
Hallo @ All,
http://forums.purebasic.com/german/post ... 0d00840e5c#
http://forums.purebasic.com/german/post ... 0d00840e5c#
ich interessiere mich für Purebasic und war anfangs von der Demoversion begeistert.
Leider hat sich das schnell geändert, ist es NICHT möglich mit Purebasic auf der einfachen Art eine Dateigröße festzustellen?
Ich programmiere mit RB5.2 seit Jahren Tools und wollte diese Zeilen auf Purebasic umsetzen.
Beispiel Dateigröße auslesen.
filesize [bytes] = 'TEST.txt' rem Dateigröße lesen
echo [bytes] rem Echobox zeigt 16 bytes an, was richtig ist.
Diese zwei Zeilen ist ein lauffähiges und auch Copilierbares Programm.
Nun mein Versuch mit Purebasic.
; Programm XXXX ohne Vorprogramm nicht möglich
RId = ReadFile(#PB_Any, "TEST.txt")
TestLen.l = ReadLong(RId)
MessageRequester("Größen Test", Str(TestLen), 0) ; Ausgabe = 544432452 bytes ???
; Programm XXXX
Was mache ich falsch? Ein Befehl zum Feststellen einer Dateigröße finde ich in der Hilfe nicht.
Ich würde gerne auf Purebasic umsteigen, wenn es vernünftige Anleitungen geben würde. In der Demohilfe werden Beispiele so dargestellt, dass man sie als Einsteiger nicht nachvollziehen kann und bei den Demos.pb funzen zu 50% nur Error Zeilen.
L.G. ToolBoy

Re: Purebasic mein erster Versuch
Verfasst: 04.01.2010 07:19
von ts-soft
Code: Alles auswählen
MessageRequester("Größen Test", Str(FileSize("TEST.txt")))

Re: Purebasic mein erster Versuch
Verfasst: 04.01.2010 07:39
von ToolBoy
Hallo,
meinen Dank für die schnelle Antwort.
Alle Zeilen gelöscht und nur
MessageRequester("Größen Test", Str(FileSize("TEST.txt")))
eingefügt und schon funst es.
Ich nehme an, dass die Anzahl der Bytes zur weiter Verarbeitung in der variable Str(FileSitze) stehen.
Die Umstellung wird für mich, mit 63 Jahren, nicht einfach sein.
Grüße ToolBoy
Re: Purebasic mein erster Versuch
Verfasst: 04.01.2010 07:59
von ts-soft
Hier mal etwas ausführlicher:
Code: Alles auswählen
Define size.q ; alternativ Define.q size oder dasselbe für Global, Protected, Static und Shared
; Quad ist wichtig, damits auch bei sehr grossen Dateien funktioniert.
size = FileSize("TEST.txt")
Select size
Case -1
MessageRequester("Fehler", "Datei wurde nicht gefunden!", #MB_ICONERROR)
Case -2
MessageRequester("Info", "Datei ist ein Verzeichnis!", #MB_ICONINFORMATION)
Default
MessageRequester("Größen Test", Str(size))
EndSelect
Re: Purebasic mein erster Versuch
Verfasst: 04.01.2010 08:45
von ToolBoy
Hallo,
#MB_ICONERROR) und #MB_ICONINFORMATION) erzeugt ERROR in Zeile....
nur so funst das bei mir.
; Programm
;MessageRequester("Größen Test", Str(FileSize("TEST.txt"))) ; GRÖSSE = 20 byte
Define size.q ; alternativ Define.q size oder dasselbe für Global, Protected, Static und Shared
; Quad ist wichtig, damits auch bei sehr grossen Dateien funktioniert.
size = FileSize("TEST.txt")
Select size
Case -1
MessageRequester("Fehler", "Datei wurde nicht gefunden!") ;, #MB_ICONERROR)
Case -2
MessageRequester("Info", "Datei ist ein Verzeichnis!") ;, #MB_ICONINFORMATION)
Default
MessageRequester("Größen Test", Str(size)) ; GRÖSSE = 20 byte
EndSelect
TextGadget(3, 60, 47, 150,18, Str(size))
SetGadgetColor(3, #PB_Gadget_BackColor, RGB(255,255,255))
SetGadgetColor(3, #PB_Gadget_FrontColor, RGB(0,200,0))
SetGadgetFont(3, LoadFont(0, "Arial", 10))
; weiter im Programm
Danke, werde mal weiter Testen.
ToolBoy
Re: Purebasic mein erster Versuch
Verfasst: 04.01.2010 11:51
von ts-soft
ToolBoy hat geschrieben:
#MB_ICONERROR) und #MB_ICONINFORMATION) erzeugt ERROR in Zeile....
Dann verwendest Du entweder die Demo oder ein anderes Betriebssystem als Windows.
Weglassen ist aber kein Problem.
Gruß
Thomas
Re: Purebasic mein erster Versuch
Verfasst: 04.01.2010 12:21
von ToolBoy
Hallo,
ja, ich verwende die Demo und werde mir PB erst kaufen, wenn ich sehe, dass ich es einigermaßen beherrschen werde und das es mir Vorteile gegenüber RB5.2 oder das kommende RB6.0 bringt.
Was ich vermisse oder noch nicht gefunden habe, ist ein Befehl die Windowstitelleiste ganz auszuschalten.
Bei RB5.2 geht das mit
rem Windowsfenster erstellen
newdialog 'P1', 'DIALOG', '162|30|702|80'
getdialog [hwnd] = 'P1' , 'HWND'
EXT [ret] = [_rbUtil2], 'rbxDlgSetStyle', [hwnd], 'Caption', 'NoSysMenu'
rem Titelleiste ohne Buttons
oder
EXT [ret] = [_rbUtil2], 'rbxDlgSetStyle', [hwnd], 'Caption', 'remove'
rem Fenster ganz ohne Titelleiste
Ich habe einige Tools, wo der Anwender das Fenster nicht verschieben darf und diese Tools möchte ich natürlich dann auch auf PB umstellen.
Denn bei PB4.40 ist eine Einzeiler Exe gerade mal ca. 6 kb groß
bei RB5.2 immerhin 198 kb.
L.G. ToolBoy
Re: Purebasic mein erster Versuch
Verfasst: 04.01.2010 12:30
von Kiffi
Hallo ToolBoy,
ToolBoy hat geschrieben:ja, ich verwende die Demo
dann schreib das bitte in Deine Signatur. Somit wird vermieden, dass
wir Dir Codes schicken, die in der Demo nicht funktionieren.
ToolBoy hat geschrieben:Was ich vermisse oder noch nicht gefunden habe, ist ein Befehl die Windowstitelleiste ganz auszuschalten.
Dafür gibt es das Flag
#PB_Window_BorderLess, das Du in OpenWindow() setzen kannst:
Code: Alles auswählen
EnableExplicit
Enumeration
#frmMain
EndEnumeration
Enumeration
#cmdExit
EndEnumeration
OpenWindow(#frmMain, #PB_Ignore, #PB_Ignore, 200, 200, "", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
ButtonGadget(#cmdExit, 10, 10, 100, 20, "Exit")
Define WWE, Quit
Repeat
WWE = WaitWindowEvent()
Select WWE
Case #PB_Event_Gadget
Select EventGadget()
Case #cmdExit
Quit = #True
EndSelect
EndSelect
Until Quit = #True
Grüße ... Kiffi
Re: Purebasic mein erster Versuch
Verfasst: 04.01.2010 12:33
von ts-soft
Dann solltest Du bei der Erstellung des Fensters den Flag:
angeben!
Weitere Infos in der Hilfe unter OpenWindow()
oder hier:
http://www.purebasic.com/german/documen ... indow.html
// edit
Oh, Kiffi war schneller

Re: Purebasic mein erster Versuch
Verfasst: 04.01.2010 14:26
von ToolBoy
Hallo Kiffi und ts-soft,
damit funst es ohne Titelfenster, nur meine Schleife For I = 1 To 100 funst dann nicht mehr.
; Programm Zeilen vom Test Programm
Code: Alles auswählen
Case 1
If OpenWindow(14, 0, 0, 240, 16, "Progress", #PB_Window_ScreenCentered)
StickyWindow(14, 1)
ProgressBarGadget(14, 5, 3, 230, 10, 0, 100)
SetGadgetState (14, 0)
For I = 1 To 100 ; ERROR MELDUNG irgendwas mit der variable
SetGadgetState (14, I)
Delay (100)
Next
CloseWindow(14)
EndIf
Case 2
RunProgram("XXX.exe") ; funst
EndSelect
; weiter im Programm
Möchte euch nicht weiter nerven und werde einfach weiter Testen, Testen, Testen.
Ich würde aber gerne nur noch wissen warum die Schleife, wenn ich das Fenster mit Titelleiste erstelle funst und da kein ERROR kommt.
Hi, die Hilfe ist gut, wenn man kentnisse von PB hatt und dis Syntax versteht.
L.G. ToolBoy
__________________________________________________
Code-Tags hinzugefügt
04.01.2010
RSBasic