Semikolon in Textgadget - Problem

Anfängerfragen zum Programmieren mit PureBasic.
Klaus_1963
Beiträge: 96
Registriert: 25.06.2009 09:09

Semikolon in Textgadget - Problem

Beitrag von Klaus_1963 »

Hallo

Habe folgenden Code verbrochen (bin absoluter PB-Neuling) und bin auf ein etwas seltsames Verhalten gestossen. In der Zeile TextGadget(#Text_3,...) sollte ja eigentlich nach dem compilieren in dem #Text_3 Gadget ein Semikolon stehen. Bei allen anderen TextGadgets funktioniert das, nur dort nicht. Ich komme einfach nicht dahinter, was ich Dussel falsch mache.

Falls mich jemand erleuchten könnte wäre das super!

Noch was: beim kopieren des Source in dieses Textfile hat's die Einrückungen nicht mitgenommen... Die Problemzeile ist fett markiert.

Grüsse und Vielen Dank im Voraus

Klaus

Code: Alles auswählen

; KN - Test 20090624

Global Dateiname.s
Global Trennzeichen.s
Global Kopfzeilen.s

Enumeration
  #Window_0
  #ExplorerTree_0
  #Button_0
  #Button_1
  #String_0
  #Frame3D_0
  #Radio_1
  #Radio_2
  #Radio_3
  #Radio_4
  #String_1
  #Text_0
  #Text_1
  #Text_2
  #Text_3
EndEnumeration
;
; Mit folgender Prozedur wird die zu importierende Textdatei ausgewählt
;
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 482, 400, "Fileauswahl",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ExplorerTreeGadget(#ExplorerTree_0, 30, 20, 240, 210, "")
      ButtonGadget(#Button_0, 30, 240, 100, 30, "OK")
      ButtonGadget(#Button_1, 150, 240, 100, 30, "BEENDEN")
      TextGadget(#Text_0, 300, 30, 100, 20, "Anzahl Kopfzeilen:")
      StringGadget(#String_0, 390, 30, 60, 20, "")
      TextGadget(#Text_1, 310, 70, 80, 20, "Trennzeichen:")
      Frame3DGadget(#Frame3D_0, 300, 60, 150, 190, "")
      OptionGadget(#Radio_1, 320, 100, 70, 20, "Komma")
      OptionGadget(#Radio_2, 320, 130, 80, 20, "Semikolon")
      OptionGadget(#Radio_3, 320, 160, 90, 20, "Leerzeichen")
      OptionGadget(#Radio_4, 320, 190, 20, 20, "")
      StringGadget(#String_1, 340, 190, 30, 20, "")
      TextGadget(#Text_2, 30, 300, 240, 80, "",#PB_Text_Border )
      TextGadget(#Text_3, 350, 300, 50, 40, ";", #PB_Text_Border) ;****
      
    EndIf
    
    SetGadgetState(#Radio_3,1)
         
  EndIf
  
Repeat

EventID = WaitWindowEvent()

  If #Button_0 = EventGadget()
    DateiName = GetGadgetText(#ExplorerTree_0)
    SetGadgetText(#Text_2,DateiName)
  EndIf
  
  If #Button_1 = EventGadget()
    Quit =1
  EndIf
  
  If #Radio_1 = EventGadget()
    Trennzeichen = ","
  ElseIf #Radio_2 = EventGadget()
    Trennzeichen = ";"
  ElseIf #Radio_3 = EventGadget()
    Trennzeichen = " "
  ElseIf #Radio_4 = EventGadget()
    Trennzeichen = GetGadgetText(#String_1)
  EndIf
  
  If EventID = #PB_Event_CloseWindow 
    Quit = 1
  EndIf
  
  SetGadgetText(#Text_3, Trennzeichen)
  
Until Quit=1
  
EndProcedure

Open_Window_0()
Code Tags ergänzt - Titel korrigiert - nächstesmal bitte selber machen! - Kaeru fecit
Zuletzt geändert von Klaus_1963 am 25.06.2009 11:12, insgesamt 1-mal geändert.
sibru
Beiträge: 265
Registriert: 15.09.2004 18:11
Wohnort: hamburg

Beitrag von sibru »

Hallo Klaus_1963,

Willkommen im Forum !
Zur leichteren Lesbarkeit würd´ ich Dir empfehlen, Sourcen mit
Code-Tag´s zu versehen (der [ Code ]-Button überhalb des Text-Feldes)...

In Deinem Code packst du

Code: Alles auswählen

 SetGadgetText(#Text_3, Trennzeichen) 
bedingungslos in die WaitWindowsEvemt-Schleife, was dazu führt,
dass der VarInhalt von Trennzeichen bei jedem Event, also auch z.Bsp.
bei Mausbewegung, in´s Gadget übertragen wird. Anfänglich ist die
Var Trennzeichen leer, sodass deine Initierungs-Zuweisung übermalt
wird.
Eine mögliche Lösung:

Code: Alles auswählen

    If #Radio_1 = EventGadget()
      Trennzeichen = ","
      SetGadgetText(#Text_3, Trennzeichen)
    ElseIf #Radio_2 = EventGadget()
      Trennzeichen = ";"
      SetGadgetText(#Text_3, Trennzeichen)
    ElseIf #Radio_3 = EventGadget()
      Trennzeichen = " "
      SetGadgetText(#Text_3, Trennzeichen)
    ElseIf #Radio_4 = EventGadget()
      Trennzeichen = GetGadgetText(#String_1)
      SetGadgetText(#Text_3, Trennzeichen)
    EndIf
viel Erfolg !!!

Gruss SiBru

PS: da ist was mit´m Forum murksig: die Code-Tag´s klappen nicht !!!
(da wird wohl gerade irgendwas ´dran gemacht, die Seite war vorhin
auch nicht erreichbar...)

posting korrigiert - der einzelne Tag als Name des Buttons war das Problem - Kaeru fecit
Bild Bild
Caliban
Beiträge: 41
Registriert: 08.09.2004 08:46

Beitrag von Caliban »

Hallo mir wahr gerade langweilig versuchs mal so:

(edit: jetzt geht das mit dem benutzerdefinierten Zeichen auch richtig)

Code: Alles auswählen

; KN - Test 20090624 

Global Dateiname.s 
Global Trennzeichen.s 
Global Kopfzeilen.s 

Enumeration 
#Window_0 
#ExplorerTree_0 
#Button_0 
#Button_1 
#String_0 
#Frame3D_0 
#Radio_1 
#Radio_2 
#Radio_3 
#Radio_4 
#String_1 
#Text_0 
#Text_1 
#Text_2 
#Text_3 
EndEnumeration 
; 
; Mit folgender Prozedur wird die zu importierende Textdatei ausgewählt 
; 
Procedure Open_Window_0() 
  If OpenWindow(#Window_0, 216, 0, 482, 400, "Fileauswahl", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) 
    ExplorerTreeGadget(#ExplorerTree_0, 30, 20, 240, 210, "") 
    ButtonGadget(#Button_0, 30, 240, 100, 30, "OK") 
    ButtonGadget(#Button_1, 150, 240, 100, 30, "BEENDEN") 
    TextGadget(#Text_0, 300, 30, 100, 20, "Anzahl Kopfzeilen:") 
    StringGadget(#String_0, 390, 30, 60, 20, "") 
    TextGadget(#Text_1, 310, 70, 80, 20, "Trennzeichen:") 
    Frame3DGadget(#Frame3D_0, 300, 60, 150, 190, "") 
    OptionGadget(#Radio_1, 320, 100, 70, 20, "Komma") 
    OptionGadget(#Radio_2, 320, 130, 80, 20, "Semikolon") 
    OptionGadget(#Radio_3, 320, 160, 90, 20, "Leerzeichen") 
    OptionGadget(#Radio_4, 320, 190, 20, 20, "") 
    StringGadget(#String_1, 340, 190, 30, 20, "") 
    TextGadget(#Text_2, 30, 300, 240, 80, "",#PB_Text_Border ) 
    TextGadget(#Text_3, 350, 300, 50, 40, ";", #PB_Text_Border)     
  
    SetGadgetState(#Radio_3,1) 
  EndIf 

  Repeat 
  
    EventID = WaitWindowEvent() 
    
    If EventID = #PB_Event_Gadget      
      Select EventGadget()    
        Case  #Button_0 
          DateiName = GetGadgetText(#ExplorerTree_0) 
          SetGadgetText(#Text_2,DateiName)                
        Case #Button_1 
          Quit =1         
        Case #Radio_1  
          Trennzeichen = ","           
        Case #Radio_2 
          Trennzeichen = ";" 
        Case #Radio_3 
          Trennzeichen = " " 
        Case #Radio_4
          Trennzeichen = GetGadgetText(#String_1) 
        Case #String_1
          Trennzeichen = GetGadgetText(#String_1) 
          
      EndSelect 
      
      SetGadgetText(#Text_3, Trennzeichen) 
    EndIf
    
    If EventID = #PB_Event_CloseWindow 
      Quit = 1 
    EndIf 
    
    
  
  Until Quit=1 

EndProcedure 

Open_Window_0()
Zuletzt geändert von Caliban am 25.06.2009 11:29, insgesamt 2-mal geändert.
Klaus_1963
Beiträge: 96
Registriert: 25.06.2009 09:09

Hi sibru und Caliban

Beitrag von Klaus_1963 »

Das ist ja toll: so schnell eine Antwort zu erhalten hatte ich ja gar nicht erwartet! Vielen Dank für die Hilfe. Macht ja immer mehr Spass mit PB. Anfänglich dachte ich ja etwas verächtlich über "Basic". Doch bin sogar ich noch lernfähig und revidiere so langsam meine Meinung :wink:
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

Beitrag von ts-soft »

Dann ändere mal bitte den Titel. Nach dem Problem: Ein blödes Problem ...
wird hier im Forum niemand suchen
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Klaus_1963
Beiträge: 96
Registriert: 25.06.2009 09:09

Uuppps

Beitrag von Klaus_1963 »

Jawohl, Chef! :oops:
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

Beitrag von ts-soft »

Verarsche?

Textgadget kein Semikolon oder ähnlich. Nach Problem sucht hier keiner.
Bei der Gelegenheit kannste gleich Codetags im ersten Posting einfügen.

Wenn Du nicht weißt wie das geht, suchste nach Codetags (nach Problem hilft dabei auch nicht :mrgreen: )
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Klaus_1963
Beiträge: 96
Registriert: 25.06.2009 09:09

Don't Panic

Beitrag von Klaus_1963 »

Guten Tag ts-soft

Entschuldigung: sollte ein kleines Scherzchen sein...

Grüsse

Klaus :lol:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

nu is tu lout!

Willkommen im Forum!

die Code-Tags kannst du übrigens auch eingeben,
indem du einen Absatz markierst und dann auf den

Code: Alles auswählen

-Button klickst, 
dann wird der gesamte markierte Teil eingekästelt.


... hast du denn Erfahrung mit anderen Sprachen?
über Basic denkt eigentlich nur verächtlich, wer von Professoren mit Fortran-Scheuklappen verzogen wurde...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Klaus_1963
Beiträge: 96
Registriert: 25.06.2009 09:09

Hi Kaeru Gaman

Beitrag von Klaus_1963 »

Vielen Dank. Tja, ich gehöre noch zu der Sorte von Typen, die sich sogar noch Commodore, Tandy und ZX81 und Sharp MZ Basic rumgeschlagen haben (grins). C ist da natürlich viel eleganter. Mit Fortran musste ich mich im Studium rumschlagen: fand ich nie den Hit. Dann mal TurboPascal, Visual Basic. Und neuer auch Java, C#, Python. Ich kann aber keine Sprache "perfekt", nur so weit, dass ich möglichst mit wenig Aufwand ein Problem lösen kann...

Grüsse Klaus
Antworten