Fehler bei Addgadgetitem?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Fehler bei Addgadgetitem?

Beitrag 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
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: Fehler bei Addgadgetitem?

Beitrag von Josh »

Hilfe zu AddGadgetItem hat geschrieben: 'Ergebnis' wird nur in Verbindung mit MDIGadget() unterstützt
Benutzeravatar
Deluxe0321
Beiträge: 336
Registriert: 19.05.2006 00:31
Kontaktdaten:

Re: Fehler bei Addgadgetitem?

Beitrag von Deluxe0321 »

Zudem zeichnest du das Fenster überhaupt nicht richtig.
Du hälst das Fenster 'an' bevor überhaupt ein Event abgearbeitet werden kann.
Ich habe keine Lösung, aber ich bewundere das Problem.
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Re: Fehler bei Addgadgetitem?

Beitrag 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?
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: Fehler bei Addgadgetitem?

Beitrag 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.
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Re: Fehler bei Addgadgetitem?

Beitrag 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
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Fehler bei Addgadgetitem?

Beitrag 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:
Antworten