Befehl über mehrere Zeilen

Anfängerfragen zum Programmieren mit PureBasic.
frankmannb
Beiträge: 47
Registriert: 21.02.2010 13:02

Befehl über mehrere Zeilen

Beitrag 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.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Befehl über mehrere Zeilen

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Re: Befehl über mehrere Zeilen

Beitrag 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.
(Win 11 64-bit, PB 6.04 und 6.10)
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: Befehl über mehrere Zeilen

Beitrag 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.
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
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Befehl über mehrere Zeilen

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Befehl über mehrere Zeilen

Beitrag 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!
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: Befehl über mehrere Zeilen

Beitrag 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

Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Re: Befehl über mehrere Zeilen

Beitrag von Sebastian »

Ich dachte eigentlich, dass das PB-Team hier Abhilfe schaffen würde. Es wird langsam Zeit, denke ich...
(Win 11 64-bit, PB 6.04 und 6.10)
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: Befehl über mehrere Zeilen

Beitrag 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:
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
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Re: Befehl über mehrere Zeilen

Beitrag von Sebastian »

Gibt es irgendwo eine "Most Wanted Liste"?
(Win 11 64-bit, PB 6.04 und 6.10)
Antworten