Seite 1 von 1

Fehler in Purebasic Textgadget Funktion ? ..Zeichen & !!

Verfasst: 27.10.2013 12:20
von 3dhubiflieger
Ich programmiere gerade eine neue Version meines Programms joystartend.npage.de

Leider habe ich das Problem das ich mit der Textgadgetfunktion kein & ausgeben kann.
Statt diesem Zeichen wird dann ein anderes anderes _ ausgegeben ??? Keine Ahnung
warum !!

Hier nochmal das Problem
textgadget(gadgetnr,"&")

...gibt irgendwas mit _ aus und nicht &

...Ist das ein Fehler in Purebasic ???


...schon mal vielen Dank im vorraus für eure Antworten !

Re: Fehler in Purebasic Textgadget Funktion ? ..Zeichen & !!

Verfasst: 27.10.2013 12:25
von RSBasic
Ganz einfach mit doppeltem Und-Zeichen:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  TextGadget(1, 10, 10, 480, 20, "&&Text", 0)
  
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Und nein, es ist kein Fehler, sondern eine Standard-Funktion von Windows. Damit hast du die Möglichkeit, ein bestimmtes Zeichen zu unterstreichen. Sowas wird oft in Menüs angezeigt, damit der Benutzer sieht, dass er das erste Zeichen für eine Tastenkombination nutzen kann.

Re: Fehler in Purebasic Textgadget Funktion ? ..Zeichen & !!

Verfasst: 27.10.2013 12:28
von 3dhubiflieger
....das ist es ! Das ist ja wirklich der Wahnsinn, wie schnell die Antwort kam. Jetzt kann ich endlich an meinem Programm weiter basteln ! Daaanke !

Re: Fehler in Purebasic Textgadget Funktion ? ..Zeichen & !!

Verfasst: 27.10.2013 12:28
von edel
Das ist kein Fehler in Purebasic. Unter Windows werde damit Shortcuts beschrieben.

Re: Fehler in Purebasic Textgadget Funktion ? ..Zeichen & !!

Verfasst: 27.10.2013 13:11
von NicTheQuick
Meiner Meinung nach ist es aber trotzdem ein Problem von Purebasic, da unter Linux dann wirklich das & da steht und nicht der nächste Buchstabe unterstrichen erscheint.

Re: Fehler in Purebasic Textgadget Funktion ? ..Zeichen & !!

Verfasst: 27.10.2013 13:20
von RSBasic
Es ist aber trotzdem ein Standard-Verhalten von Windows. Da muss man eben eine zusätzliche Abfrage einbauen, wenn man das Und-Zeichen korrekt unter Linux anzeigen möchte. Das ist bei anderen Programmiersprachen unter Windows ebenfalls so. Deshalb ist das kein Problem von PB. Ich finds eher falsch, wenn PB das anders machen würde. Das ist genauso wie mit der Ordner-Trennung der Pfadangabe. Unter Windows ist es eben "\" und unter Linux "/".

Re: Fehler in Purebasic Textgadget Funktion ? ..Zeichen & !!

Verfasst: 27.10.2013 16:44
von Danilo
RSBasic hat geschrieben:Das ist genauso wie mit der Ordner-Trennung der Pfadangabe. Unter Windows ist es eben "\" und unter Linux "/".
Mann kann direkt cross-platform Code schreiben und "/" verwenden. Funktioniert auch auf Windows.

Re: Fehler in Purebasic Textgadget Funktion ? ..Zeichen & !!

Verfasst: 27.10.2013 18:48
von HeX0R
Danilo hat geschrieben:Mann kann direkt cross-platform Code schreiben und "/" verwenden. Funktioniert auch auf Windows.
Nicht immer:

Code: Alles auswählen

OpenFileRequester("Bla", "C:/Windows/write.exe", "Executable (*.exe)", 0)
OpenFileRequester("Bla", "C:\Windows\write.exe", "Executable (*.exe)", 0)

Re: Fehler in Purebasic Textgadget Funktion ? ..Zeichen & !!

Verfasst: 28.10.2013 06:41
von Danilo
HeX0R hat geschrieben:
Danilo hat geschrieben:Mann kann direkt cross-platform Code schreiben und "/" verwenden. Funktioniert auch auf Windows.
Nicht immer:

Code: Alles auswählen

OpenFileRequester("Bla", "C:/Windows/write.exe", "Executable (*.exe)", 0)
OpenFileRequester("Bla", "C:\Windows\write.exe", "Executable (*.exe)", 0)
Danke für den Hinweis, dann funktioniert das also nur manchmal (z.B. mit IncludeBinary)
und macht platform-unabhängige Programmierung wieder umständlicher.

Re: Fehler in Purebasic Textgadget Funktion ? ..Zeichen & !!

Verfasst: 28.10.2013 20:20
von HeX0R
Soviel ich weiss sind es nur die Requester, die da rumpienzen.

Mit diesem PipiFax-Code braucht man sich darüber keine Gedanken mehr zu machen:

Code: Alles auswählen

CompilerIf #PB_Compiler_OS = #PB_OS_Windows
	Procedure.s OpenFileRequester__(Title$, DefaultFile$, Pattern$, PatternPosition, Flags)
		ProcedureReturn OpenFileRequester(Title$, ReplaceString(DefaultFile$, "/", "\"), Pattern$, PatternPosition, Flags)
	EndProcedure
	
	Procedure.s PathRequester__(Title$, Path$)
		ProcedureReturn PathRequester(Title$, ReplaceString(Path$, "/", "\"))
	EndProcedure
	
	Procedure.s SaveFileRequester__(Titel$, StandardDatei$, Pattern$, PatternPosition)
		ProcedureReturn SaveFileRequester(Titel$, ReplaceString(StandardDatei$, "/", "\"), Pattern$, PatternPosition)
	EndProcedure
	
	Macro OpenFileRequester(a, b, c, d, e = 0)
		OpenFileRequester__(a, b, c, d, e)
	EndMacro
	
	Macro PathRequester(a, b)
		PathRequester__(a, b)
	EndMacro
	
	Macro SaveFileRequester(a, b, c, d)
		SaveFileRequester__(a, b, c, d)
	EndMacro
CompilerEndIf