Verfasst: 23.05.2006 12:55
Hi,
danke für die Info. Ich habe es dann mit PB 4.0 mal ausprobiert.
Wenn ich eine Datei erstellen lasse, z.B. 10 MB möchte ich die TrackBarList
in dem Fenster anzeigen, damit man sieht, dass das Programm noch arbeitet.
Im Moment erreicht die TrackBar jedoch das Ende viel zu schnell, obwohl
der Vorgang des Erstellens noch nicht abgeschlossen wurde.
Hat da jemand noch eine Idee, was ich da machen kann?
Ich habe mal den Code (PB 4.0) mit beigehängt.
Zur Zeit setze ich den Status der TrackBar in der Prozedur "crtFile()".
Danke + Gruß,
Daniel
danke für die Info. Ich habe es dann mit PB 4.0 mal ausprobiert.
Wenn ich eine Datei erstellen lasse, z.B. 10 MB möchte ich die TrackBarList
in dem Fenster anzeigen, damit man sieht, dass das Programm noch arbeitet.
Im Moment erreicht die TrackBar jedoch das Ende viel zu schnell, obwohl
der Vorgang des Erstellens noch nicht abgeschlossen wurde.
Hat da jemand noch eine Idee, was ich da machen kann?
Ich habe mal den Code (PB 4.0) mit beigehängt.
Code: Alles auswählen
; -- DECLARATION ---
Declare initInfo()
Declare setInfos()
Declare disableInfos(flag)
Declare crtFile()
; -- GLOBAL ---
Global Free.q
Global Total.q
; -- ENUMERATION ---
Enumeration
#MAIN
#LIST
#FULL
#SPECIFIC
#TRACKBAR
#HIGH
#SAVEFILE
#FSIZE
#BTN_CRT
#BTN_QUIT
#PROGBAR
#SIZELIST
EndEnumeration
dName.s
VName.s
FSName.s
*Buffer = AllocateMemory(255)
VName = Space(255)
FSName = Space(255)
; -- STRUCTURE FOR DISC SIZE ---
Structure int64
Long1.l
Long2.l
EndStructure
Procedure.s getDriveType(parameter.s)
result.s
Select GetDriveType_(parameter)
Case 2 : result = "Removable Drive"
Case 3 : result = "Fixed Drive"
Case 4 : result = "Remote (Network)"
Case 5 : result = "CDRom Drive"
Case 6 : result = "RAM Drive"
Default : result = "Unknown"
EndSelect
ProcedureReturn result
EndProcedure
Procedure initInfo()
frmID = Frame3DGadget(#PB_Any, 10, GadgetHeight(#LIST) + 20, GadgetWidth(#LIST), 180, "Partition Information")
OptionGadget(#FULL, 20, 195, 140, 20, "Use Full Free Size")
OptionGadget(#SPECIFIC, 20, 220, 140, 20, "Use Size")
TrackBarGadget(#TRACKBAR, 160, 225, 500, 18, 0, 100)
TextGadget(#PB_Any, 165, 250, 10, 20, "0")
TextGadget(#HIGH, 650, 250, 100, 20, "100")
TextGadget(#PB_Any, 20, 280, 120, 20, "File Size (MB):")
StringGadget(#FSIZE, 165, 280, 120, 20, "")
TextGadget(#PB_Any, 20, 310, 120, 20, "File Path/Name:")
StringGadget(#SAVEFILE, 165, 310, 490, 20, "", #PB_String_ReadOnly)
ButtonGadget(#BTN_CRT, 10, 360, 60, 20, "Create")
ButtonGadget(#BTN_QUIT, 80, 360, 60, 20, "Quit")
ProgressBarGadget(#PROGBAR, 10, 390, GadgetWidth(#LIST), 30, 0, 100)
disableInfos(0)
EndProcedure
Procedure setInfos()
SetGadgetAttribute(#TRACKBAR, #PB_TrackBar_Maximum, Val(GetGadgetItemText(#LIST, GetGadgetState(#LIST), 5)))
SetGadgetText(#HIGH, GetGadgetItemText(#LIST, GetGadgetState(#LIST), 5))
SetGadgetText(#FSIZE, GetGadgetItemText(#LIST, GetGadgetState(#LIST), 5))
SetGadgetText(#SAVEFILE, GetGadgetItemText(#LIST, GetGadgetState(#LIST), 0) + "MEMORYTEST.DAT")
EndProcedure
Procedure disableInfos(flag)
Select flag
Case 0
DisableGadget(#BTN_CRT, 1) : DisableGadget(#FULL, 1) : DisableGadget(#SPECIFIC, 1)
DisableGadget(#TRACKBAR, 1) : DisableGadget(#SAVEFILE, 1) : DisableGadget(#FSIZE, 1)
Case 1
DisableGadget(#BTN_CRT, 0) : DisableGadget(#FULL, 0) : DisableGadget(#SPECIFIC, 0)
DisableGadget(#TRACKBAR, 1) : DisableGadget(#SAVEFILE, 0)
SetGadgetState(#FULL, 1)
Case 2
DisableGadget(#TRACKBAR, 0) : DisableGadget(#FSIZE, 0)
SetGadgetState(#TRACKBAR, Val(GetGadgetItemText(#LIST, GetGadgetState(#LIST), 5)))
Case 3
DisableGadget(#TRACKBAR, 0) : DisableGadget(#FSIZE, 1)
SetGadgetState(#TRACKBAR, Val(GetGadgetItemText(#LIST, GetGadgetState(#LIST), 5)))
SetGadgetText(#FSIZE, GetGadgetText(#HIGH))
Case 9
DisableGadget(#BTN_CRT, 1) : DisableGadget(#FULL, 1) : DisableGadget(#SPECIFIC, 1)
DisableGadget(#TRACKBAR, 1) : DisableGadget(#FSIZE, 1) : DisableGadget(#LIST, 1) : DisableGadget(#BTN_QUIT, 1)
Case 10
DisableGadget(#BTN_QUIT, 0) : DisableGadget(#LIST, 0)
EndSelect
EndProcedure
Procedure crtFile()
CreateFile(1, GetGadgetText(#SAVEFILE))
k.q = Val(GetGadgetText(#FSIZE)) * 1024 * 1024
For a = 0 To k
SetGadgetState(#PROGBAR, a)
WriteByte(1,0)
Next
CloseFile(1)
EndProcedure
; ---- START MAIN PROGRAM ----
hWnd = OpenWindow(#MAIN, 0, 0, 820, 390, "Memory Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If hWnd <> 0
CreateGadgetList(WindowID(#MAIN))
ListIconGadget(#LIST, 10, 10, 800, 150, "#", 50, #PB_ListIcon_FullRowSelect | #PB_ListIcon_GridLines)
AddGadgetColumn(#LIST, 2, "Volume Name", 170)
AddGadgetColumn(#LIST, 3, "File System", 80)
AddGadgetColumn(#LIST, 4, "Drive Type", 150)
AddGadgetColumn(#LIST, 5, "Total Size (MB)", 110)
AddGadgetColumn(#LIST, 6, "Free Size (MB)", 110)
For i = 0 To GetLogicalDriveStrings_(255, *Buffer)
C = PeekB(*Buffer + i)
If C > 64 And C < 91
dName = Chr(C) + ":\"
If GetVolumeInformation_(dName, VName, 255, Serial, 0, 0, FSName, 255)
GetDiskFreeSpaceEx_(@dName, BytesFreeToCaller.int64, TotalBytes.int64, TotalFreeBytes.int64)
Total = ((TotalBytes\Long1 >> 20) & $FFF) | (TotalBytes\Long2 << 12)
Free = ((TotalFreeBytes\Long1 >> 20) & $FFF) | (TotalFreeBytes\Long2 << 12)
AddGadgetItem(#LIST, -1, dName + Chr(10) + VName + Chr(10) + FSName + Chr(10) + getDriveType(dName) + Chr(10) + Str(Total) + Chr(10) + Str(Free))
EndIf
EndIf
Next
initInfo()
EndIf
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case #LIST
disableInfos(1)
setInfos()
Case #SPECIFIC
disableInfos(2)
Case #FULL
disableInfos(3)
Case #TRACKBAR
SetGadgetText(#FSIZE, Str(GetGadgetState(#TRACKBAR)))
Case #FSIZE
If EventType() = #PB_EventType_LostFocus
SetGadgetState(#TRACKBAR, Val(GetGadgetText(#FSIZE)))
EndIf
Case #BTN_QUIT
Quit = 1
Case #BTN_CRT
disableInfos(9)
ResizeWindow(#MAIN, #PB_Ignore , #PB_Ignore , #PB_Ignore , 430)
Delay(500)
crtFile()
Delay(500)
disableInfos(10)
ResizeWindow(#MAIN, #PB_Ignore , #PB_Ignore , #PB_Ignore , 390)
EndSelect
EndSelect
Until Quit = 1
Danke + Gruß,
Daniel