Problem mit mehrzeiligem StringGadget()

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Problem mit mehrzeiligem StringGadget()

Beitrag von Fusselohr »

Hallo an alle :),
ich hätte da ein kleines Problem mit dem mehrzeiligen StringGadget. Ich möchte nämlich 4 Zeilen auslesen, doch er liefert mir nur einen String ohne irgendeinen Zeilenumbruch... außer ich drücke eben jedes mal Enter. Könnte mir jemand helfen wie ich das anstellen sollte, damit ich endlich die einzelnen Zeilen bekommen :D.

Schönen Gruß,
Fusselohr
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
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 »

Code? Und wer ist er? Der Debugger zeigt keine Umbrüche an!
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
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Beitrag von Fusselohr »

Ich hab hier einfach nur das Stringgadget genommen:

Code: Alles auswählen

StringGadget(4,20,25,270,60,"",#ES_MULTILINE|#ESB_DISABLE_LEFT|#ESB_DISABLE_RIGHT)
Und das (oder auch er :)):

Code: Alles auswählen

If FindString(GetGadgetText(4),Chr(13)+Chr(10),0)
End
EndIf
Hier ist der komplette Code:

Code: Alles auswählen

 If OpenWindow(0, 556, 332, 270, 158, "Kommentar",#PB_Window_SystemMenu|#PB_Window_Invisible|#PB_Window_ScreenCentered)  
  SetWindowLong_(WindowID(0),#GWL_EXSTYLE,#WS_EX_TOOLWINDOW)
  ResizeWindow(0,#PB_Ignore,#PB_Ignore, 310, 158)
  ShowWindow_(WindowID(0),#SW_SHOW)
    If CreateGadgetList(WindowID(0))
      ButtonGadget(1, 70, 120, 80, 25, "Okay")
      ButtonGadget(2, 165, 120, 80, 25, "Abbrechen")
      Frame3DGadget(3, 10, 5, 290, 100, "Kommentar einfügen")
    StringGadget(4,20,25,270,60,"",#ES_MULTILINE|#ESB_DISABLE_LEFT|#ESB_DISABLE_RIGHT)
    EndIf
  EndIf
  
  Repeat
  Event = WaitWindowEvent()
  
  Select Event
  Case #PB_Event_Gadget
  Select EventGadget()
  
  Case 1
  If FindString(GetGadgetText(4),Chr(13)+Chr(10),0)
  End
  EndIf
  
  EndSelect
  EndSelect
  
  Until Event = #PB_Event_CloseWindow
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
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 »

Bei mir beendet er, wenn ich einen Zeilenumbruch im Text habe und Okay
drücke.
Die Kombination Deiner Konstanten fürs Stringgadget ist IMHO nicht erlaubt,
müßte ich aber erstmal nachschauen.

Und FindString sollte bei dem ersten Zeichen und nicht bei 0 beginnen :wink:
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
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Beitrag von Fusselohr »

Bei mir beendet er, wenn ich einen Zeilenumbruch im Text habe und Okay
drücke.
Jup bei mir auch. Aber wenn ich einfach nur ne Reihe von "g" eingebe bis er in die nächste Zeile hüpft dann aktzeptiert ers nich ^^.
Die Kombination Deiner Konstanten fürs Stringgadget ist IMHO nicht erlaubt,
müßte ich aber erstmal nachschauen.
Okay danke :D.
Und FindString sollte bei dem ersten Zeichen und nicht bei 0 beginnen
Merk ich mir.

Gruß Fusselohr
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
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 »

Fusselohr hat geschrieben:
Bei mir beendet er, wenn ich einen Zeilenumbruch im Text habe und Okay
drücke.
Jup bei mir auch. Aber wenn ich einfach nur ne Reihe von "g" eingebe bis er in die nächste Zeile hüpft dann aktzeptiert ers nich ^^.
Dann ist ja auch kein LineFeed oder CarriageReturn (Chr(10/13)) vorhanden,
sondern es wird nur im Gadget umgebrochen (nur die Ansicht).

//edit
Das sind Scrollbarkonstanten, also falsch, auch wenn die Werte etwas bewirken.
Zuletzt geändert von ts-soft am 28.04.2008 19:10, insgesamt 1-mal geändert.
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
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Beitrag von Fusselohr »

aha, und kann man da dann irgendwie noch ein Zeilenumbruch oder so setzten, es gibt ja je nach schriftbreite eine unterschiedliche Zahl an Zeichen... ?
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Beitrag von hjbremer »

wie wäre es mit folgender Idee ?

http://www.purebasic.fr/german/viewtopi ... textbreite

und da den Beitrag von Stargate die Prozedur Einlesen

1.Font Laden + SetFont
2.Fontzeichenbreiten einlesen
3.FindString durch Countstring ersetzen, finde ich besser
4.Chr(13)+Chr(10) durch #CRLF$ ersetzen
5.

Code: Alles auswählen

        
            Case #button1 
              string$ = GetGadgetText(#string1)
              anz = CountString(string$, #CRLF$)
              If anz
                 Debug "CRLF vorhanden"
              Else
                x$ = string$
                br = 0
                  For j = 0 To Len(x$)-1 
                    br + ZeichenLen(PeekB(@x$+j)) 
                    If br > #string1br
                       Break
                    EndIf  
                  Next 
                zeile1$ = Left(x$,j-1)
                Debug zeile1$
              EndIf
6.letztes Leerzeichen suchen
7.mit LEFT string abschneiden
8.solange wiederholen bis Kommentar abgearbeitet
9. oder so ähnlich wie du willst
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Beitrag von Fusselohr »

Vielen Dank hjbremer klappt wunderbar ^^.

Mit sehr freundlichen Grüßen,
Fusselohr
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
Antworten