1. Abschmieren: Ein String kann nur 64kb fassen. Musste schon die String-Grenze höher setzen und das Einlesen überhaupt mit ReadData() machen. Viel schneller als ReadString().
2. Datei öffnen. Da musst du schon prüfen, ob abgebrochen wurde, weil er sonst die Datei zu öffnen versucht.
Du kannst es so machen:
Code: Alles auswählen
ergebnis = OpenFileRequester(bla,bla....)
If ergebnis
[bla bla bla.... hier der Code....]
EndIf
3. PopUpMenus gibt´s in PB doch eh, oder?
4. Noch ein Tipp:
Defmaster hat geschrieben:Das Suche / Ersetzen wollt ich wie bei NP mit nen Extra Fenster machen allerdings ging es nich so richtig weil das andere Fenster dann "unansprechbar" wird.
Da kannst du UseWindow(number) verwenden. Das müsste so gehen, wenn ich mich nicht irre
Kannst dir ja mal meinen Editor ansehen .

Hab ich mal geschrieben.

Sicher nich perfekt, aber zum Ansehen ganz gut

Hat aber nich Suchen / Ersetzen. Ist schön klein gehalten
Code: Alles auswählen
;- ############ jaFFe - just another Funny File editor
;- V 1.0.5
;- ############ CODED BY ANDYX 2005
;{- StringBufferManipulation
Procedure SetStringManipulationBufferSize(Size)
PBStringBase.l = 0
PBMemoryBase.l = 0
!MOV Eax, dword [PB_StringBase]
!MOV [esp+4],Eax
!MOV Eax, dword [PB_MemoryBase]
!MOV [esp+8],Eax
HeapReAlloc_(PBMemoryBase, #GMEM_ZEROINIT, PBStringBase, Size)
!MOV dword [_PB_StringBase],Eax
EndProcedure
SetStringManipulationBufferSize(200000)
;}
;{- Images
CreateImage(0,16,16)
StartDrawing(ImageOutput())
Box(0,8,16,8,RGB(0,0,255))
StopDrawing()
CreateImage(1,16,16)
StartDrawing(ImageOutput())
Box(0,2,16,14,RGB(0,0,255))
StopDrawing()
;}
;{- Window and Gadgets
OpenWindow(0,0,0,750,550,#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget,"jaFFe")
CreateGadgetList(WindowID(0))
EditorGadget(0,10,30,730,495)
CreateToolBar(0,WindowID(0))
ToolBarStandardButton(99,#PB_ToolBarIcon_New)
ToolBarStandardButton(0,#PB_ToolBarIcon_Open)
ToolBarStandardButton(1,#PB_ToolBarIcon_Save)
ToolBarSeparator()
ToolBarImageButton(88,UseImage(0))
ToolBarImageButton(77,UseImage(1))
ToolBarSeparator()
ToolBarStandardButton(2,#PB_ToolBarIcon_Properties)
CreateStatusBar(0,WindowID(0))
AddStatusBarField(750)
StatusBarText(0,0,"200 KB String Buffer")
;}
;{- Variablen
filecounter = 0
oldstring$ = ""
newstring$ = ""
;}
;{- Hauptschleife
Repeat
event = WindowEvent()
Select event
Case #PB_EventMenu
Select EventMenuID()
Case 99
oldstring$ = ""
newstring$ = ""
SetGadgetText(0,"")
SetWindowTitle(0,"jaFFe")
Case 0
file$ = OpenFileRequester("jaFFe open","","All(*.*)|*.*",1)
If file$
SetGadgetText(0,"")
SetWindowTitle(0,"jaFFe - LOADING")
oldstring$ = ""
newstring$ = ""
siz = FileSize(file$)
*mem = AllocateMemory(siz)
OpenFile(filecounter,file$)
ReadData(*mem,siz)
CloseFile(filecounter)
filecounter + 1
oldstring$ = PeekS(*mem,siz)
SetGadgetText(0,oldstring$)
SetWindowTitle(0,"jaFFe - "+file$)
EndIf
Case 1
file$ = SaveFileRequester("jaFFe save","","All(*.*)|*.*",1)
If file$
SetWindowTitle(0,"jaFFe - SAVING")
newstring$ = GetGadgetText(0)
CreateFile(filecounter,file$)
event = WindowEvent()
If event = #PB_Event_CloseWindow
End
EndIf
Delay(1)
WriteString(newstring$)
CloseFile(filecounter)
filecounter + 1
oldstring$ = newstring$
SetWindowTitle(0,"jaFFe - "+file$)
EndIf
Case 2
MessageRequester("jaFFe","jaFFe - just another Funny File editor"+Chr(13)+Chr(10)+"by AndyX 2005",0)
Case 88
SetStringManipulationBufferSize(200000)
StatusBarText(0,0,"200 KB String Buffer")
Case 77
SetStringManipulationBufferSize(5000000)
StatusBarText(0,0,"5 MB String Buffer")
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
Delay(1)
ForEver
;}
Und ich wüsste nich, das man nur eine bestimmte Anzahl Zeichen in ein EditorGadget eintragen kann.
Greetz,
AndyX