p-unicode und NULL

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

p-unicode und NULL

Beitrag von _JON_ »

Ist es möglich ein Null, an einen mit p-unicode oder p-ascii type zu übergeben?

Laut MSDN sollte eine MsgBox, wenn ich Null als Title übergebe den Standardtext "Fehler" setzen.
Aber PB meckert ja wenn ich keinen String benutzte :?

Code: Alles auswählen

Prototype.l ProtoMessageBoxW(Window.l, Body.p-unicode, Title.p-unicode, Flags.l = 0)

If OpenLibrary(0, "User32.dll")
    MsgBox.ProtoMessageBoxW = GetFunction(0, "MessageBoxW")
    ;MsgBox(0, "Hello", 0)
    ;MsgBox(0, "Hello", #NUL)
    ;MsgBox(0, "Hello", #NUL$) ;keine echte null, leerer string
    ;MsgBox(0, "Hello", #NULL$)  ;keine echte null, leerer string
EndIf

PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: p-unicode und NULL

Beitrag von RSBasic »

Code: Alles auswählen

MessageBox_(0, "Message ohne Titel bzw. mit Error-Titel", 0, 0)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
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: p-unicode und NULL

Beitrag von ts-soft »

Jetzt fehlt aber noch die Beantwortung der Frage:
- Ist es möglich ein Null, an einen mit p-unicode oder p-ascii type zu übergeben?
Nein. Es wird automatisch ein Nullstring übergeben, aber niemals eine Null.
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
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: p-unicode und NULL

Beitrag von _JON_ »

Danke für die schnellen Antworten.

Schade das es nicht geht, fand die Pseudotypes eigentlich recht praktisch.
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
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: p-unicode und NULL

Beitrag von ts-soft »

_JON_ hat geschrieben:Schade das es nicht geht, fand die Pseudotypes eigentlich recht praktisch.
Ich finde sie immer noch recht praktisch und das man mit diesen nur Strings übergeben kann, sollte
ja einleuchten. Dafür sind sie ja da :wink:
Und das Wort "Fehler" in den Titel von Windows zu setzen lassen, ist wohl etwas wo man drauf
verzichten kann.
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
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: p-unicode und NULL

Beitrag von _JON_ »

Naja, ob man nun eine kleine Procedere benutzt oder einfach nur den String übergibt ist doch eigentlich egal.

Das mit der MsgBox war doch nur ein Beispiel gewesen. Wird sicherlich auch sinnvollere geben.
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: p-unicode und NULL

Beitrag von RSBasic »

Du kannst, wenn es nicht anders gehen würde, kannst du auch zweimal deklarieren:

Code: Alles auswählen

Prototype.l ProtoMessageBoxW(Window.l, Body.p-unicode, Title.p-unicode, Flags.l = 0)
Prototype.l ProtoMessageBoxWEx(Window.l, Body.p-unicode, Title, Flags.l = 0)

If OpenLibrary(0, "User32.dll")
    MsgBox.ProtoMessageBoxW = GetFunction(0, "MessageBoxW")
    MsgBoxEx.ProtoMessageBoxWEx = GetFunction(0, "MessageBoxW")
    MsgBox(0, "Hello", "Mein Titel")
    MsgBoxEx(0, "Hello", 0)
EndIf
Du kannst dann selber aussuchen, ob du beispielsweise mit oder ohne Standard-Titel haben möchtest.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
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: p-unicode und NULL

Beitrag von ts-soft »

titel kann man auch ermitteln:

Code: Alles auswählen

Procedure.s GetLocalErrorTitle()
  Protected hInstance, result.s{255}
  hInstance = LoadLibraryEx_("user32", 0, #LOAD_LIBRARY_AS_DATAFILE)
  If hInstance
    LoadString_(hInstance, 2, @result, 255)
    FreeLibrary_(hInstance)
  EndIf
  ProcedureReturn result
EndProcedure

 Prototype.l ProtoMessageBoxW(Window.l, Body.p-unicode, Title.p-unicode, Flags.l = 0)

If OpenLibrary(0, "User32.dll")
    MsgBox.ProtoMessageBoxW = GetFunction(0, "MessageBoxW")
    title.s = GetLocalErrorTitle()
    MsgBox(0, "bla bla", title)
EndIf

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
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Re: p-unicode und NULL

Beitrag von helpy »

Probiert folgendes:

Code: Alles auswählen

Prototype.l ProtoMessageBoxW(Window.l, Body.p-unicode, Title.p-unicode = 0, Flags.l = 0)

Define NullString.s
Debug @NullString

If OpenLibrary(0, "User32.dll")
	MsgBox.ProtoMessageBoxW = GetFunction(0, "MessageBoxW")
	MsgBox(0, "Hello")
	MsgBox(0, "Hello", NullString)
EndIf
String-Variablen, die nicht mit einem String befüllt werden, verweisen auf NULL!
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: p-unicode und NULL

Beitrag von _JON_ »

helpy hat geschrieben:Probiert folgendes:
String-Variablen, die nicht mit einem String befüllt werden, verweisen auf NULL!
Super, ich wusste doch, das es irgendwie möglich sein muss :bounce:

Danke
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Antworten