read error at adress 17 bei sämtlichen Untils
Wiso nicht?
Mach doch einfach eine Globale Variable. Aber besser wäre es wenn die ID als Parameter übergeben wird. Es ist voralles übersichtlicher.
Vil. hast du ja nicht das prinzip der ID bei LoadImage() verstanden... Du kannst mit der ID im ganzem Programm herumspielen, solange das Image nicht aus dem Speicher gelöscht wird...
Mach doch einfach eine Globale Variable. Aber besser wäre es wenn die ID als Parameter übergeben wird. Es ist voralles übersichtlicher.
Vil. hast du ja nicht das prinzip der ID bei LoadImage() verstanden... Du kannst mit der ID im ganzem Programm herumspielen, solange das Image nicht aus dem Speicher gelöscht wird...
Und das Klappt bei mir leider nicht:Andreas_S hat geschrieben: Vil. hast du ja nicht das prinzip der ID bei LoadImage() verstanden... Du kannst mit der ID im ganzem Programm herumspielen, solange das Image nicht aus dem Speicher gelöscht wird...
Code: Alles auswählen
LoadImage(6, "C:\1.JPEG", 0)
LoadImage(7, "C:\Datei.JPG", 0)
Procedure ListIcon()
E = 0
Win.s = "C:\Windows"
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)
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
mm = CreateThread(@ListIcon(), 0)
Delay(5000)
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7
Code: Alles auswählen
LoadImage(6, "C:\1.JPEG", 0)
LoadImage(7, "C:\Datei.JPG", 0)
Procedure ListIcon()
E = 0
Win.s = "C:\Windows"
UseJPEGImageDecoder()
ReadFile(8, Win.s+"\Inhalt.txt")
If OpenWindow(10, 0, 0, 500, 550, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(10))
ListIconGadget(11, 1, 1, 599, 550, "Name", 300)
AddGadgetColumn(11, 1, "Größe in Byte", 200)
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
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7
>> So besser?
naja, daran muss noch gearbeitet werden...
Ganz einfach... du musst .*ico laden, es ist ja auch ein ListIconGadget...
Und zu deinem Code... Da sind so viele Dinge drinnen die keinen Sinn haben, um nur ein paar bsp. zu nennen:
UseJPEGImageDecoder() innerhalb einer Prozedur, das sollte ganz am anfang des codes stehen...
Du verwendest die Variable E nicht für berrechnugen, aber fragst sie auf 5 ab...
Das ist wirklich sehr naiv. man kann mit EoF(File) überprüfen ob man am ende der Datei angekommen ist.
Außerdem gibt man einen allokierten Speicher vor Programmende wieder frei wenn man ihn vorher bezogen hat. Das gilt auch für Images, Files, ect. .
-> Back to the routes.
naja, daran muss noch gearbeitet werden...
Ganz einfach... du musst .*ico laden, es ist ja auch ein ListIconGadget...
Und zu deinem Code... Da sind so viele Dinge drinnen die keinen Sinn haben, um nur ein paar bsp. zu nennen:
UseJPEGImageDecoder() innerhalb einer Prozedur, das sollte ganz am anfang des codes stehen...
Du verwendest die Variable E nicht für berrechnugen, aber fragst sie auf 5 ab...
Code: Alles auswählen
ReadFile(8, "C:\Windows\Inhalt.txt")
For x = 1 To 500
a$ = ReadString(8, 0)
b$ = ReadString(8, 0)
c$ = ReadString(8, 0)
Next
Außerdem gibt man einen allokierten Speicher vor Programmende wieder frei wenn man ihn vorher bezogen hat. Das gilt auch für Images, Files, ect. .
-> Back to the routes.
So habe nach mehreren Stunden den Fehler gefunden bzw. die 3 Fehler. Ich räume meinen Code jetzt mal ein bisschen auf und hoffe, dass sich jetzt nichtmehr so leicht Fehler einschleichen.
Wenn ihr wollt Poste ich den Code später nochmal und hoffe vielleicht noch Verbesserungsvorschläge zu bekommen.
Wenn ihr wollt Poste ich den Code später nochmal und hoffe vielleicht noch Verbesserungsvorschläge zu bekommen.
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7
Habe jetzt leider bei einem anderen Program wieder diesen Fehler.
Hier der Code:
Warum wird bei Endprocedure wieder "Invalid Memory access" angezeigt?
Habe phpbb 4.30 Beta 4
Hier der Code:
Code: Alles auswählen
Procedure Auswahl(*Wert)
If OpenWindow(1, 216, 0, 451, 194, "Auswahlfenster", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
OptionGadget(50, 70, 70, 20, 20, "")
OptionGadget(51, 70, 130, 20, 20, "")
StringGadget(52, 100, 70, 210, 25, "")
StringGadget(53, 100, 130, 210, 25, "")
ButtonGadget(54, 330, 70, 100, 30, "Auswählen")
ButtonGadget(55, 330, 130, 100, 30, "Auswählen")
TextGadget(56, 10, 20, 400, 20, "Bitte wählen sie eine Datei oder ein Verzeichnis aus, das hochgeladen werden soll.")
TextGadget(57, 20, 70, 40, 20, "Datei:")
TextGadget(58, 16, 130, 40, 20, "Ordner:")
ButtonGadget(59, 170, 160, 120, 33, "Senden")
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 54
Datei$ = OpenFileRequester("Datei Auswählen", "Desktop", "*.*", 70, 0)
SetGadgetText(52, Datei$)
Case 55
Ordner$ = PathRequester("Ordner Auswählen", "")
SetGadgetText(52, Datei$)
Case 59
Goto Auswahl_Ende:
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
*Wert = 66
Auswahl_Ende:
EndProcedure
wahl = CreateThread(@Auswahl(), 67)
WaitThread(wahl)
Habe phpbb 4.30 Beta 4
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7
Du lieferst hier ein gutes Beispiel ab, warum Goto bei vielen verpönt ist. Du springst bei
aus einer Repeat Until Schleife raus, das kann den Stack durcheinanderbringen und damit zu Abstürzen führen. Benutze lieber Break.
Code: Alles auswählen
Case 59
Goto Auswahl_Ende:
für die bilder nimm lieber ne enumeration für die IDs ( die sind dann auch automatisch Global ).
dann so:
Ausserdem solltest du deine Bildpfade auch relativ angeben anstatt absolut - wenn du das programm auf einem anderen pc auch zum laufen bringen willst 
Cheers,
Thalius
Code: Alles auswählen
Enumeration
#Bild1 ; -> 0
#Bild2 ; -> 1
; ... usw.
Endenumeration
Code: Alles auswählen
LoadImage(#Bild1, "C:\1.JPEG", 0)
LoadImage(#Bild2, "C:\Datei.JPG", 0)
...

Cheers,
Thalius
"...smoking hash-tables until until you run out of memory." :P