Equivalent CHAR

BlitzMax Forums/BlitzMax Beginners Area/Equivalent CHAR

BlitzMax does not have a way of defining embedded arrays such as the square bracket arrays in Blitz3D, so if this is the C code:

typedef struct tagLOGFONTA
    {
    LONG lfHeight;
    LONG lfWidth;
    LONG lfEscapement;
    LONG lfOrientation;
    LONG lfWeight;
    BYTE lfItalic;
    BYTE lfUnderline;
    BYTE lfStrikeOut;
    BYTE lfCharSet;
    BYTE lfOutPrecision;
    BYTE lfClipPrecision;
    BYTE lfQuality;
    BYTE lfPitchAndFamily;
    CHAR lfFaceName[ 32 ];
    } 	LOGFONTA;

you need to use something like the following with varptr lfFaceName0 being the address of the string
Type TLogFont
	Field lfHeight
	Field lfWidth
	Field lfEscapement
	Field lfOrientation
	Field lfWeight

	Field lfItalic:Byte
	Field lfUnderline:Byte
	Field lfStrikeOut:Byte
	Field lfCharSet:Byte
	Field lfOutPrecision:Byte
	Field lfClipPrecision:Byte
	Field lfQuality:Byte
	Field lfPitchAndFamily:Byte

	Field lfFaceName0:Byte	
	Field lfFaceName1:Byte	
	Field lfFaceName2:Byte	
	Field lfFaceName3:Byte	
	Field lfFaceName4:Byte	
	Field lfFaceName5:Byte	
	Field lfFaceName6:Byte	
	Field lfFaceName7:Byte	
	Field lfFaceName8:Byte	
	Field lfFaceName9:Byte	
	Field lfFaceName10:Byte	
	Field lfFaceName11:Byte	
	Field lfFaceName12:Byte	
	Field lfFaceName13:Byte	
	Field lfFaceName14:Byte	
	Field lfFaceName15:Byte	
	Field lfFaceName16:Byte	
	Field lfFaceName17:Byte	
	Field lfFaceName18:Byte	
	Field lfFaceName19:Byte	
	Field lfFaceName20:Byte	
	Field lfFaceName21:Byte	
	Field lfFaceName22:Byte	
	Field lfFaceName23:Byte	
	Field lfFaceName24:Byte	
	Field lfFaceName25:Byte	
	Field lfFaceName26:Byte	
	Field lfFaceName27:Byte	
	Field lfFaceName28:Byte	
	Field lfFaceName29:Byte	
	Field lfFaceName30:Byte	
	Field lfFaceName31:Byte	
End Type

and to set the name:
lf:TLogFont=New TLogFont
a$="hello"
MemCopy Varptr lf.lfFaceName0,a,a.length
Print lf.lfFaceName0
Print lf.lfFaceName1
Print lf.lfFaceName2
Print lf.lfFaceName3
Print lf.lfFaceName4
Print lf.lfFaceName5