Seite 1 von 4

Befehl über mehrere Zeilen

Verfasst: 22.11.2012 21:21
von frankmannb
Guten Abend,

kann mir jemand von euch verraten wie ich eine Abfrage von Befehlen z.B. mehrere hintereinander laufende OR-Abfragen die sich zu sehr in die Breite zieht mit Zeilenumbruch verabeiten kann. Ich kann leider in der Hilfe nichts finden.

Danke euch im Vorrauss.

Re: Befehl über mehrere Zeilen

Verfasst: 22.11.2012 21:25
von RSBasic
Direkt wie z.B in anderen Sprachen mit "& _" ist leider nicht möglich. Du kannst aber versuchen, deine If-Bedingung aufzusplitten (mehrere Bedingungen verschachteln) oder versuchen, kürzere Variablennamen zu verwenden, falls diese zu lang sind.

Re: Befehl über mehrere Zeilen

Verfasst: 23.11.2012 07:51
von Sebastian
Diese Frage hat sich wohl schon jeder hier gestellt. Ich verstehe nicht, warum hier nicht endlich eine Lösung angeboten wird. So schwer kann es ja eigentlich nicht sein.

Re: Befehl über mehrere Zeilen

Verfasst: 23.11.2012 08:07
von ts-soft

Code: Alles auswählen

EnableExplicit

Define result, wrapmode
Define Scintilla = Val( GetEnvironmentVariable("PB_TOOL_Scintilla") )

If Scintilla
  SendMessageTimeout_(Scintilla, #SCI_GETWRAPMODE, 0, 0, #SMTO_ABORTIFHUNG, 2000, @result)
  If result = 0
    wrapmode = 1 ; 1 = wrap at word boundary
    ; 2 = wrap at character boundary (for asian languages without spaces)
  Else
    wrapmode = 0
  EndIf
  
  ; by DoubleDutch, add visual marker and indent wrapped line
  ; http://www.purebasic.fr/english/viewtopic.php?f=18&t=30385
  ; http://forums.purebasic.com/german/viewtopic.php?f=16&t=25933&start=28
  SendMessageTimeout_(Scintilla, #SCI_SETWRAPVISUALFLAGS, #SC_WRAPVISUALFLAG_START, 0, #SMTO_ABORTIFHUNG, 2000, @result)
  SendMessageTimeout_(Scintilla, #SCI_SETWRAPSTARTINDENT, 16, 0, #SMTO_ABORTIFHUNG, 2000, @result)                    ; <-- indent amount
  SendMessageTimeout_(Scintilla, #SCI_SETWHITESPACEFORE, #True, RGB($70, $50, $d0), #SMTO_ABORTIFHUNG, 2000, @result) ; <-- colour of marker
  
  #SCI_SETWRAPINDENTMODE = 2472
  #SC_WRAPINDENT_FIXED  = 0 ; Wrapped sublines aligned To left of window plus amount set by SCI_SETWRAPSTARTINDENT
  #SC_WRAPINDENT_SAME   = 1 ; Wrapped sublines are aligned To first subline indent
  #SC_WRAPINDENT_INDENT = 2 ; Wrapped sublines are aligned To first subline indent plus one more level of indentation
  SendMessageTimeout_(Scintilla, #SCI_SETWRAPINDENTMODE, #SC_WRAPINDENT_INDENT, 0, #SMTO_ABORTIFHUNG, 2000,  @result)                       ; <-- indent mode
  
  #SC_WRAPVISUALFLAGLOC_DEFAULT       = 0 ; Visual flags drawn near border
  #SC_WRAPVISUALFLAGLOC_END_BY_TEXT   = 1 ; Visual flag at End of subline drawn near text
  #SC_WRAPVISUALFLAGLOC_START_BY_TEXT = 2 ; Visual flag at beginning of subline drawn near text
  SendMessageTimeout_(Scintilla,#SCI_SETWRAPVISUALFLAGSLOCATION, 2, 0, #SMTO_ABORTIFHUNG, 2000, @result)              ; <-- marker location
  
  SendMessageTimeout_(Scintilla, #SCI_SETWRAPMODE, wrapmode, 0, #SMTO_ABORTIFHUNG, 2000, @result)
EndIf 
Compilieren, als IDE-Tool einbinden und am besten noch in die Toolbar zum umschalten.

Re: Befehl über mehrere Zeilen

Verfasst: 23.11.2012 10:20
von RSBasic
@ts-soft
Nicht zu empfehlen! Mit diesem Tool kannst du deine Quellcodes teilweise zerstören, weil er mit einigen Befehlen/Funktionen nicht klar kommt.
Ich weiß leider nicht mehr welche Befehle das waren, aber wenn man diese im Editor eintippt, dann stürzt PB ohne Meldung ab und dein Quellcode ist eventuell durcheinander gewürfelt. Ich werd' zu Hause nochmal testen und hier posten, welche Funktionen das waren.
Seitdem nutze ich sowas auf keinen Fall mehr. Ist zwar eine nette Funktion, aber in Verbindung mit PB sehr instabil.

Re: Befehl über mehrere Zeilen

Verfasst: 23.11.2012 16:44
von RSBasic
Neben Abstürzen nach Eingabe bestimmter Befehle ist es außerdem mit diesem Wrap-Tool sehr ärgerlich, wenn andere Zeilen automatisch geändert/durchgewürfelt werden.
Beispiel 1: http://www.file-upload.net/download-684 ... 1.avi.html
Beispiel 2: http://www.file-upload.net/download-684 ... 2.avi.html

Ich musste damals einmal eine komplette Datei fixen, weil ich zu spät sah, dass die Zeilen bei eingeschalter Wrap-Funktion geändert werden, weil PB anscheinend damit nicht klar kommt. Daher lieber Finger weg!

Re: Befehl über mehrere Zeilen

Verfasst: 23.11.2012 17:35
von kunstlust
Geht das nicht mit Data?

Code: Alles auswählen

Restore StringData
Read.s MyFirstData$
Read.s MySecondData$
MessageRequester("Test ABC", MyFirstData$ + MySecondData$)
End  
DataSection   
  StringData:
  Data.s "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
  Data.s "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
EndDataSection


Re: Befehl über mehrere Zeilen

Verfasst: 23.11.2012 18:42
von Sebastian
Ich dachte eigentlich, dass das PB-Team hier Abhilfe schaffen würde. Es wird langsam Zeit, denke ich...

Re: Befehl über mehrere Zeilen

Verfasst: 23.11.2012 18:54
von ts-soft
Sebastian hat geschrieben:Ich dachte eigentlich, dass das PB-Team hier Abhilfe schaffen würde. Es wird langsam Zeit, denke ich...
Macht auch mehr Sinn, wenn der Compiler das unterstützt. Rein visueller Umbruch, den
man nicht selbst bestimmen kann, bringt nicht viel, deshalb hab ich obigen Code auch
kaum Getestet.

Code: Alles auswählen

Procedure Bla(parameter1.i, _ ; anzahl gummienten
               parameter2.i = #PB_Ignore, _ ; optionale grösse
               parameter3.s = "") ; namen der gummienten
   
   ; ... code
   
EndProcedure
sowas z.B. wäre schick und nützlich :wink:

Re: Befehl über mehrere Zeilen

Verfasst: 23.11.2012 18:56
von Sebastian
Gibt es irgendwo eine "Most Wanted Liste"?