Seite 1 von 1

Fehler bei Addgadgetitem?

Verfasst: 20.03.2010 11:46
von Sauer-RAM
Ja das ist der Anfang eines kleines Funkabhör-fakeprogrammes. Leider ist da irgendein Fehler in der Procedure "write()":
Wenn das Programm etwas schreibt kommt immer der messagerequester und wenn ich den messagerequester mit ; wegmache geht es gar nicht!
Keine Ahnung warum. Ich hoffe ihr könnt mir helfen.
Danke schonma Im Vorraus.

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

Enumeration
  #Listview_0
  #Signal
  #Frequenz
  #Frame3D_0
  #Frame3D_1
EndEnumeration

Procedure Write(text.s)
If AddGadgetItem(#listview_0,0,text)
Else
  ;MessageRequester("Error","Kann keinen neuen Eintrag erstellen")
  ;End
EndIf
EndProcedure

Procedure Load(gesch)
e = 0
Repeat
  e + 1
  SetGadgetState(#frequenz,e)
  Delay(gesch)
Until e = 100
SetGadgetState(#frequenz,0)
EndProcedure

Procedure Open_Window_0()
If OpenWindow(#Window_0, 231, 53, 308, 390, "Funk-Detektor",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  ListViewGadget(#Listview_0, 10, 10, 290, 250)
  ProgressBarGadget(#Signal, 20, 350, 270, 20, 0, 10,#PB_ProgressBar_Smooth)
  ProgressBarGadget(#Frequenz, 20, 290, 270, 20, 0, 10,#PB_ProgressBar_Smooth)
  Frame3DGadget(#Frame3D_0, 10, 270, 290, 50, "Frequenz")
  Frame3DGadget(#Frame3D_1, 10, 330, 290, 50, "Signalsärke")
EndIf
SetGadgetColor(#Signal,#PB_Gadget_FrontColor,$00FF00)
SetGadgetColor(#Frequenz,#PB_Gadget_FrontColor,$00FF00)
SetGadgetColor(#Signal,#PB_Gadget_BackColor,$000000)
SetGadgetColor(#Frequenz,#PB_Gadget_BackColor,$000000)
SetGadgetColor(#listview_0,#PB_Gadget_BackColor,$000000)
SetGadgetColor(#Listview_0,#PB_Gadget_FrontColor,$00FF00)
EndProcedure

Procedure scan()
write("Stelle verbindung mit Hauptantenne her...")
Delay(2593)
write("Verbindung hergestellt")
Delay(776)
write("Suche nach Signalen...")
load(32)
write("Suche nach Signalen...")
load(30)
write("Suche nach Signalen...")
load(34)
write("Suche nach Signalen...")
load(28)
write("Suche nach Signalen...")
load(24)
write("Suche nach Signalen...")
load(30)
write("Suche nach Signalen...")
load(32)
write("Signal gefunden")
Delay(321)
write("Bandbreiten scan läuft...")
EndProcedure

open_window_0()

scan()

Repeat
event = WaitWindowEvent()
  If event = #PB_Event_CloseWindow
    e = 1
  EndIf
Until e = 1

Re: Fehler bei Addgadgetitem?

Verfasst: 20.03.2010 11:57
von Josh
Hilfe zu AddGadgetItem hat geschrieben: 'Ergebnis' wird nur in Verbindung mit MDIGadget() unterstützt

Re: Fehler bei Addgadgetitem?

Verfasst: 20.03.2010 12:01
von Deluxe0321
Zudem zeichnest du das Fenster überhaupt nicht richtig.
Du hälst das Fenster 'an' bevor überhaupt ein Event abgearbeitet werden kann.

Re: Fehler bei Addgadgetitem?

Verfasst: 20.03.2010 12:23
von Sauer-RAM
Josh hat geschrieben:Hilfe zu AddGadgetItem hat geschrieben:
'Ergebnis' wird nur in Verbindung mit MDIGadget() unterstützt
Ja ich habs auch mehrmals ohne If versucht. Ging aber auch nicht.
Deluxe0321 hat geschrieben:Zudem zeichnest du das Fenster überhaupt nicht richtig.
Du hälst das Fenster 'an' bevor überhaupt ein Event abgearbeitet werden kann.
Wie meinst du das? Das Fenster wird doch schon in der Open_window_0 Procedure gezeichnet oder?

Re: Fehler bei Addgadgetitem?

Verfasst: 20.03.2010 12:31
von Josh
Sauer-RAM hat geschrieben:Ja ich habs auch mehrmals ohne If versucht. Ging aber auch nicht.
also bei mir geht es, allerdings kommt die ganze anzeige erst wenn alle deine write's abgearbeitet sind. ich würds mal mit einem timer in der eventschleife versuchen und dann immer einen eintrag anzeigen lassen.

Re: Fehler bei Addgadgetitem?

Verfasst: 20.03.2010 13:24
von dysti
Hey,

Code: Alles auswählen

Wie meinst du das? Das Fenster wird doch schon in der Open_window_0 Procedure gezeichnet oder?
Lasse den Code unten mal laufen. Der Debugger zeigt dir an, was dein Programm macht.
In der Eventschleife wird der "scan" veranlaßt.
Wann aber kommt er in der Eventschleife zurück?
Dann nämlich erst zeichnet er das ListViewGadget neu.
Alles klar?

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

Enumeration
  #Listview_0
  #Signal
  #Frequenz
  #Frame3D_0
  #Frame3D_1
  #Button_Start
EndEnumeration

Procedure Write(text.s)
AddGadgetItem(#listview_0,-1,text)
Debug text
EndProcedure

Procedure Load(gesch)
e = 0
Repeat
  e + 1
  SetGadgetState(#frequenz,e)
  Delay(gesch)
Until e = 100
SetGadgetState(#frequenz,0)
EndProcedure

Procedure Open_Window_0()
If OpenWindow(#Window_0, 231, 53, 308, 490, "Funk-Detektor",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  ListViewGadget(#Listview_0, 10, 10, 290, 250)
  ProgressBarGadget(#Signal, 20, 350, 270, 20, 0, 10,#PB_ProgressBar_Smooth)
  ProgressBarGadget(#Frequenz, 20, 290, 270, 20, 0, 10,#PB_ProgressBar_Smooth)
  Frame3DGadget(#Frame3D_0, 10, 270, 290, 50, "Frequenz")
  Frame3DGadget(#Frame3D_1, 10, 330, 290, 50, "Signalsärke")
  ButtonGadget(#Button_Start,15, 410, 50, 50, "Start")
EndIf
SetGadgetColor(#Signal,#PB_Gadget_FrontColor,$00FF00)
SetGadgetColor(#Frequenz,#PB_Gadget_FrontColor,$00FF00)
SetGadgetColor(#Signal,#PB_Gadget_BackColor,$000000)
SetGadgetColor(#Frequenz,#PB_Gadget_BackColor,$000000)
SetGadgetColor(#listview_0,#PB_Gadget_BackColor,$000000)
SetGadgetColor(#Listview_0,#PB_Gadget_FrontColor,$00FF00)
EndProcedure

Procedure scan()
write("Stelle verbindung mit Hauptantenne her...")
Delay(2593)
write("Verbindung hergestellt")
Delay(776)
write("Suche nach Signalen...")
load(32)
write("Suche nach Signalen...")
load(30)
write("Suche nach Signalen...")
load(34)
write("Suche nach Signalen...")
load(28)
write("Suche nach Signalen...")
load(24)
write("Suche nach Signalen...")
load(30)
write("Suche nach Signalen...")
load(32)
write("Signal gefunden")
Delay(321)
write("Bandbreiten scan läuft...")
EndProcedure

open_window_0()



Repeat
event = WaitWindowEvent()
   Select Event
      Case #PB_Event_Gadget
          ; bis der Startbutton angeclickt wurde, kann ich mein Fenster auf den Bildschirm fertig anzeigen
        Select EventGadget()
          Case #Button_Start
          ; Starte den Scan
          scan()
         ; Hallo, bin wieder zurück und erneuere die Anzeige des Listviews
        EndSelect
   EndSelect

  

  If event = #PB_Event_CloseWindow
    e = 1
  EndIf
Until e = 1

Die Lösung ist diese:

Code: Alles auswählen

Procedure Write(text.s)
AddGadgetItem(#listview_0,-1,text)
While WindowEvent() : Wend
Debug text
EndProcedure

Re: Fehler bei Addgadgetitem?

Verfasst: 20.03.2010 18:52
von ts-soft
dysti hat geschrieben:Die Lösung ist diese:

Code: Alles auswählen

Procedure Write(text.s)
AddGadgetItem(#listview_0,-1,text)
While WindowEvent() : Wend
Debug text
EndProcedure
:freak: