SizeOf( structure ) / ASCII-Größe unter Unicode ermitteln?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Kurzer
Beiträge: 1614
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: SizeOf( structure ) / ASCII-Größe unter Unicode ermittel

Beitrag von Kurzer »

Verdammt, das ist mir entgangen - peinlich. :oops:
Danke für den Hinweis. :allright:

Nachtrag @mk-soft:

Entweder übersehe ich wieder etwas oder es geht tatsächlich nicht, wenn ich deine BaseClass benutze (also die BaseClass Struktur mit meiner BHC-Struktur erweitere, so wie es Deine Klasse vorsieht.

Folgende Prozedur mit dem Macroaufruf ist gegeben:

Code: Alles auswählen

	Procedure InitStructure(*this.strBHC_Database)
		SetAscii(*this\strBHC_Header\sMagicWord, #BHC_HeaderMagicWord)
		;... weiterer Code
	EndProcedure
Die obige Prozedur wird aus der Init() Prozedur aus aufgerufen, die Deine BaseClass bei Instanzierung des Objekts aufruft:

Code: Alles auswählen

	Procedure Init(*this.strBHC_Database)
		Debug "Initialize BHC_Database"
		; weiterer Code
		InitStructure(*this)
	EndProcedure : AsInitializeObject(Init)
Das Macro SetAscii() wird bei der Compilierung wie folgt aufgelöst:

Code: Alles auswählen

PokeS(@*this\strBHC_Header\sMagicWord, #BHC_HeaderMagicWord, SizeOf(*this\strBHC_Header\sMagicWord), #PB_Ascii)
Und der Compiler bricht an dieser Stelle mit "Syntax Fehler" ab.

Bild

Die Textkonstante #BHC_HeaderMagicWord habe ich auch schon gegen "Test" getauscht - ohne Erfolg.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2023: 56 Jahre.
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: SizeOf( structure ) / ASCII-Größe unter Unicode ermittel

Beitrag von mk-soft »

Schade...

PB kann wohl nicht die Struktur auflösen (Bug?)

Code: Alles auswählen

Structure strBHC_Header
  sMagicWord.a[4]
  wDatabaseType.w
  sUserdefinedDatabaseTypecode.a[8]
  lVersion.l
  sDescription.a[30]
EndStructure

; Properties
Structure sDataSet ; Extends sBaseClass
  Header.strBHC_Header
  Count.i
EndStructure

Macro SetAscii(Destination, Text)
  PokeS(@Destination, Text, SizeOf(Destination), #PB_Ascii)
EndMacro

Macro GetAcsii(Source)
  PeekS(@Source, SizeOf(Source), #PB_Ascii)
EndMacro

Global test.sDataSet

; SetAscii(test\Header\sMagicWord, "1234") ; Syntax error

Debug SizeOf(sDataSet) ; Ok
Debug SizeOf(sDataSet\Header) ; Ok
; Debug SizeOf(sDataSet\Header\sMagicWord) ; Bug ?
Es wird auch keine Vervollständigung angeboten
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Kurzer
Beiträge: 1614
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: SizeOf( structure ) / ASCII-Größe unter Unicode ermittel

Beitrag von Kurzer »

Danke fürs Bestätigen und auch, dass du den bugreport im englischen forum schon geschrieben hast.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2023: 56 Jahre.
Antworten