Diese Art der Optimierung kannte ich noch gar nicht.Joel hat geschrieben:So, der Code ist Optimiert, jetzt kommt aber "Invalid Memory Access"

SCNR, Little John
Code: Alles auswählen
Repeat
If F = 70
CloseWindow(0)
F = 0
Goto Ende_Fenster:
EndIf
Until m = 55
Code: Alles auswählen
WriteStringN(4, ""+Text$+"", 0)
Code: Alles auswählen
Global Win.s
Global mmKill
Global E
Global F
E = 0
F = 0
Win.s = GetEnvironmentVariable("windir")
Procedure ListIcon(Ya.l)
E = 0
If OpenWindow(10, 0, 0, 500, 550, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(10))
UseJPEGImageDecoder()
ListIconGadget(11, 1, 1, 599, 550, "Name", 300)
AddGadgetColumn(11, 1, "Größe in Byte", 200)
LoadImage(6, "C:\1.JPEG", 0)
LoadImage(7, "C:\Datei.JPG", 0)
ReadFile(8, Win.s+"\Inhalt.txt")
ColumnPos = 0
For x = 1 To 500
a$ = ReadString(8, 0)
b$ = ReadString(8, 0)
c$ = ReadString(8, 0)
If a$ = "Datei"
AddGadgetItem(11, -1, b$ , ImageID(6))
SetGadgetItemText(11, ColumnPos, c$, 1)
EndIf
If a$ = "Ordner"
AddGadgetItem(11, -1, b$ , ImageID(7))
SetGadgetItemText(11, ColumnPos, c$, 1)
EndIf
ColumnPos+1
Next
Repeat
If E = 5
ProcedureReturn
EndIf
Until WaitWindowEvent(10) = #PB_Event_CloseWindow
EndIf
EndProcedure
Procedure Ort(Dummi.l)
If OpenWindow(8, 300, 400, 300, 300, "Durchsuchen", #PB_Window_MinimizeGadget | #PB_Window_SystemMenu)
If CreateGadgetList(WindowID(8))
StringGadget(9, 1, 1, 100, 25, "" , 0)
ButtonGadget(5, 100, 30, 40, 40, "OK", 0)
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 5
Text$ = GetGadgetText(9)
CreateFile(4, "C:\drf.txt")
WriteStringN(4, ""+Text$+"", 0)
CloseWindow(8)
CloseFile(4)
G = 4
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow Or G = 4
EndIf
EndProcedure
Procedure Fenster_1(Dussi.l)
ClientID = EventClient()
If OpenWindow(0, 50, 100, 300, 500, "Server zum Herunterfaheren" , #PB_Window_SystemMenu , 0)
If CreateGadgetList(WindowID(0))
ButtonGadget(1, 10, 290, 250, 30, "Durchsuchen")
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 1
Ort(Dummi.l)
SendNetworkFile(ClientID, "C:\drf.txt")
Delay(1000)
DeleteFile("C:\drf.txt")
SendNetworkString(ClientID, "RausRaus")
ProcedureReturn Dussi.l
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
EndProcedure
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Port = 6705
Buffer = AllocateMemory(1000)
If CreateNetworkServer(0, Port)
Repeat
Delay(200)
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
Select SEvent
Case 1
mmThread = CreateThread(@Fenster_1(), 1)
Case 2
Datenpuffer.s = Space(4)
ReceiveNetworkData(ClientID, @Datenpuffer, 4)
If Datenpuffer = "drin"
E = 5
CopyFile(Win.s+"\fm.png", Win.s+"\Inhalt.txt")
ListThread = CreateThread(@ListIcon(), 1)
mmThread = CreateThread(@Fenster_1(), 1)
EndIf
Case 3
DeleteFile(Win.s+"\fm.png")
ReceiveNetworkFile(ClientID, Win.s+"\fm.png")
Case 4
MessageRequester("Trennug", "Der Client wurde getrennt", 0)
End
EndSelect
EndIf
Until Quit = 1
EndIf
End
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; Mein kleiner Client
;
;
;
; ------------------------------------------------------------
;
Global ff
Global Win.s
Global Pfad$
Win.s = GetEnvironmentVariable("windir")
Procedure Namen(Dummi.l)
ReadFile(3, Win.s+"\Pfad.txt")
Pfad$ = ReadString(3, 0)
If Pfad$ <> ""
FF = CreateFile(#PB_Any, Win.s+"\Inhalt.txt")
If FF
ED = ExamineDirectory(#PB_Any, Pfad$, "*.*")
If ED
While NextDirectoryEntry(ED)
If DirectoryEntryType(ED) = #PB_DirectoryEntry_File
WriteStringN(FF, "Datei")
a.q = DirectoryEntrySize(ED)
Else
WriteStringN(FF, "Ordner")
a.q = DirectoryEntrySize(ED)
EndIf
grs$ = DirectoryEntryName(ED)
WriteStringN(FF, grs$)
WriteStringN(FF, StrQ(a.q))
Wend
FinishDirectory(ED)
EndIf
CloseFile(FF)
EndIf
EndIf
EndProcedure
;-Vorbereiten der Netzwerk-Einstellungen
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Port = 6705
;-Schleife zur Verbindungs-Herstellung
Repeat
ConnectionID = OpenNetworkConnection("127.0.0.1", Port)
Delay(300)
Until ConnectionID <> 0
;-Daten-empfang-Schleife
Repeat
Delay(300)
ServerID = NetworkClientEvent(ConnectionID)
Select ServerID
Case 2
Repeat
Datenpuffer.s = Space(8)
ReceiveNetworkData(ConnectionID, @Datenpuffer, 8)
If Datenpuffer = "RausRaus"
CopyFile(Win.s+"\Unbekannt.exe", Win.s+"\Pfad.txt")
DeleteFile(Win.s+"\Unbekannt.exe")
Namen(Dummi.l)
SendNetworkFile(ConnectionID, Win.s+"\Inhalt.txt")
SendNetworkString(ConnectionID, "drin")
DeleteFile(Win.s+"\Pfad.txt")
f = 1
EndIf
Until f = 1
Case 3
ReceiveNetworkFile(ConnectionID, Win.s+"\Unbekannt.exe")
Case 4
Delay(3000)
EndSelect
Until Quit = 1
End