Purebasic mein erster Versuch

Anfängerfragen zum Programmieren mit PureBasic.
ToolBoy
Beiträge: 42
Registriert: 01.01.2010 16:19
Computerausstattung: Win 98ME, XP Home und Pro, Win2000 und WinVista32 Home Pre.
Wohnort: Duisburg

Purebasic mein erster Versuch

Beitrag 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 :cry:
Windows 7 U. Windows 10 pro.
Benutzeravatar
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: Purebasic mein erster Versuch

Beitrag von ts-soft »

Code: Alles auswählen

MessageRequester("Größen Test", Str(FileSize("TEST.txt")))
:wink:
ToolBoy
Beiträge: 42
Registriert: 01.01.2010 16:19
Computerausstattung: Win 98ME, XP Home und Pro, Win2000 und WinVista32 Home Pre.
Wohnort: Duisburg

Re: Purebasic mein erster Versuch

Beitrag 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
Windows 7 U. Windows 10 pro.
Benutzeravatar
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: Purebasic mein erster Versuch

Beitrag 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
ToolBoy
Beiträge: 42
Registriert: 01.01.2010 16:19
Computerausstattung: Win 98ME, XP Home und Pro, Win2000 und WinVista32 Home Pre.
Wohnort: Duisburg

Re: Purebasic mein erster Versuch

Beitrag 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
Windows 7 U. Windows 10 pro.
Benutzeravatar
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: Purebasic mein erster Versuch

Beitrag 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
ToolBoy
Beiträge: 42
Registriert: 01.01.2010 16:19
Computerausstattung: Win 98ME, XP Home und Pro, Win2000 und WinVista32 Home Pre.
Wohnort: Duisburg

Re: Purebasic mein erster Versuch

Beitrag 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
Windows 7 U. Windows 10 pro.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Purebasic mein erster Versuch

Beitrag 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
a²+b²=mc²
Benutzeravatar
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: Purebasic mein erster Versuch

Beitrag von ts-soft »

Dann solltest Du bei der Erstellung des Fensters den Flag:

Code: Alles auswählen

#PB_Window_BorderLess
angeben!
Weitere Infos in der Hilfe unter OpenWindow()
oder hier: http://www.purebasic.com/german/documen ... indow.html

// edit
Oh, Kiffi war schneller :)
ToolBoy
Beiträge: 42
Registriert: 01.01.2010 16:19
Computerausstattung: Win 98ME, XP Home und Pro, Win2000 und WinVista32 Home Pre.
Wohnort: Duisburg

Re: Purebasic mein erster Versuch

Beitrag 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
Windows 7 U. Windows 10 pro.
Antworten