Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
String addition?
#1
I tried to add a two line text in a richedit control.

This works

A$="123" + CHR$(13)
A$=A$+"456"

This doesn't work

A$="123" + CHR$(13)+"456"

Aren't they equivalent?
Reply
#2
You could try being more specific when you say "this doesn't work.". Error messages, if any, are most appreciated. Tongue
I'd knock on wood, but my desk is particle board.
Reply
#3
Big Grin OK the first code has the version

A$="123" + CHR$(13)
A$=A$+"456"

And the second code has the version

A$="123" + CHR$(13)+"456"

They produce different outputs to the RICHEDIT control

Quote: DEFINT a-z
OPTION explicit
OPTION PRIVATE

'$include once:'win\kernel32.bi'
'$include once:'win\user32.bi'
'$include once:'win\gdi32.bi'
'$INCLUDE :'win\COMMCTRL32.bi'


DIM SHARED hInstance AS long
DIM SHARED hwndREdit1 AS long
DIM SHARED hwndPB AS long

#DEFINE CreateWindow(a,b,c,d,e,f,g,h,i,j,k) CreateWindowEx(0,a,b,c,d,e,f,g,h,i,j,k)

DECLARE FUNCTION wndproc (BYVAL hwnd AS LONG, _
BYVAL msg AS LONG, _
BYVAL wparam AS LONG, _
BYVAL lparam AS LONG,) AS INTEGER

DECLARE FUNCTION WinMain(BYVAL hinstance AS LONG, _
BYVAL hprevinstance AS LONG, _
lpcmdline AS STRING, _
BYVAL nCmdShow AS INTEGER) AS INTEGER



END WinMain( GetModuleHandle(0), 0, COMMAND$, SW_NORMAL )

FUNCTION wndproc (BYVAL hwnd AS LONG, _
BYVAL msg AS LONG, _
BYVAL wparam AS LONG, _
BYVAL lparam AS LONG,) AS INTEGER

wndproc=0

SELECT CASE msg
CASE WM_COMMAND

CASE WM_CREATE

LoadLibrary("Riched32.dll")

DIM reclassname AS STRING

DIM A$

A$="123" + CHR$(13)
A$=A$+"456"

reclassname="RICHEDIT"

hwndREdit1 = createwindowex(WS_EX_CLIENTEDGE,reclassname,A$,WS_CHILD or WS_CLIPSIBLINGS or WS_VISIBLE or WS_HSCROLL or WS_VSCROLL or ES_MULTILINE or ES_AUTOVSCROLL or ES_AUTOHSCROLL or ES_WANTRETURN,_
10,10,200,150,hwnd,null,hInstance,null)

'hwndPB = CreateWindowEx(WS_EX_CLIENTEDGE,PROGRESS_CLASS,NULL, WS_CHILD or WS_VISIBLE,50,50,100,100,hwnd,null,hInstance,null)

CASE wm_close: destroywindow(hwnd)
CASE wm_destroy: postquitmessage 0
CASE ELSE: wndproc=defwindowproc(hwnd,msg,wparam,lparam)
END SELECT

END FUNCTION

FUNCTION WinMain(BYVAL hinstance AS LONG, _
BYVAL hprevInstance AS LONG, _
lpcommandline AS STRING, _
BYVAL ncmdshow AS INTEGER) AS INTEGER

DIM wc AS wndclassex
DIM hwnd AS LONG
DIM msg AS msg
DIM gszclassname AS STRING
gszclassname="myWindowClass"

wc.cbsize=LEN(wndclassex)
wc.style=0
wc.lpfnwndproc=@wndproc
wc.cbclsextra=0
wc.cbwndextra=0
wc.hinstance=hinstance
wc.hicon=loadicon(0,IDI_APPLICATION)
wc.hcursor=loadcursor(0,IDC_ARROW)
wc.hbrbackground=GetStockObject( GRAY_BRUSH )
wc.lpszmenuname=0
wc.lpszclassname=STRPTR(gszclassname)
wc.hiconsm=loadicon(0,IDI_APPLICATION)

IF registerclassex(wc)=0 THEN
'messagebox 0,"window registration failed","error",MB_ICONEXCLAMATION OR MB_OK
winmain=0
END 0
ELSE
'messagebox 0,"window registration sucsessful","woot",MB_ICONEXCLAMATION OR MB_OK
END IF

hwnd = createwindow(gszclassname ,_
"My RichEdit 1.0" ,_
WS_OVERLAPPEDWINDOW ,_
CW_USEDEFAULT ,_
CW_USEDEFAULT ,_
230 ,_
250 ,_
0 ,_
CreateMenu() ,_
hinstance ,_
0)

IF ( hwnd=0 ) THEN
messagebox 0,"window creation failed","error",MB_ICONEXCLAMATION OR MB_OK
winmain=0
EXIT FUNCTION
END IF


showwindow(hwnd,ncmdshow)
updatewindow hwnd

WHILE getmessage(msg,0,0,0)>0
translatemessage(msg)
dispatchmessage(msg)
WEND

winmain=msg.wparam
END FUNCTION


2nd


Quote:DEFINT a-z
OPTION explicit
OPTION PRIVATE

'$include once:'win\kernel32.bi'
'$include once:'win\user32.bi'
'$include once:'win\gdi32.bi'
'$INCLUDE :'win\COMMCTRL32.bi'


DIM SHARED hInstance AS long
DIM SHARED hwndREdit1 AS long
DIM SHARED hwndPB AS long

#DEFINE CreateWindow(a,b,c,d,e,f,g,h,i,j,k) CreateWindowEx(0,a,b,c,d,e,f,g,h,i,j,k)

DECLARE FUNCTION wndproc (BYVAL hwnd AS LONG, _
BYVAL msg AS LONG, _
BYVAL wparam AS LONG, _
BYVAL lparam AS LONG,) AS INTEGER

DECLARE FUNCTION WinMain(BYVAL hinstance AS LONG, _
BYVAL hprevinstance AS LONG, _
lpcmdline AS STRING, _
BYVAL nCmdShow AS INTEGER) AS INTEGER



END WinMain( GetModuleHandle(0), 0, COMMAND$, SW_NORMAL )

FUNCTION wndproc (BYVAL hwnd AS LONG, _
BYVAL msg AS LONG, _
BYVAL wparam AS LONG, _
BYVAL lparam AS LONG,) AS INTEGER

wndproc=0

SELECT CASE msg
CASE WM_COMMAND

CASE WM_CREATE

LoadLibrary("Riched32.dll")

DIM reclassname AS STRING

DIM A$

A$="123" + CHR$(13)+"456"


reclassname="RICHEDIT"

hwndREdit1 = createwindowex(WS_EX_CLIENTEDGE,reclassname,A$,WS_CHILD or WS_CLIPSIBLINGS or WS_VISIBLE or WS_HSCROLL or WS_VSCROLL or ES_MULTILINE or ES_AUTOVSCROLL or ES_AUTOHSCROLL or ES_WANTRETURN,_
10,10,200,150,hwnd,null,hInstance,null)

'hwndPB = CreateWindowEx(WS_EX_CLIENTEDGE,PROGRESS_CLASS,NULL, WS_CHILD or WS_VISIBLE,50,50,100,100,hwnd,null,hInstance,null)

CASE wm_close: destroywindow(hwnd)
CASE wm_destroy: postquitmessage 0
CASE ELSE: wndproc=defwindowproc(hwnd,msg,wparam,lparam)
END SELECT

END FUNCTION

FUNCTION WinMain(BYVAL hinstance AS LONG, _
BYVAL hprevInstance AS LONG, _
lpcommandline AS STRING, _
BYVAL ncmdshow AS INTEGER) AS INTEGER

DIM wc AS wndclassex
DIM hwnd AS LONG
DIM msg AS msg
DIM gszclassname AS STRING
gszclassname="myWindowClass"

wc.cbsize=LEN(wndclassex)
wc.style=0
wc.lpfnwndproc=@wndproc
wc.cbclsextra=0
wc.cbwndextra=0
wc.hinstance=hinstance
wc.hicon=loadicon(0,IDI_APPLICATION)
wc.hcursor=loadcursor(0,IDC_ARROW)
wc.hbrbackground=GetStockObject( GRAY_BRUSH )
wc.lpszmenuname=0
wc.lpszclassname=STRPTR(gszclassname)
wc.hiconsm=loadicon(0,IDI_APPLICATION)

IF registerclassex(wc)=0 THEN
'messagebox 0,"window registration failed","error",MB_ICONEXCLAMATION OR MB_OK
winmain=0
END 0
ELSE
'messagebox 0,"window registration sucsessful","woot",MB_ICONEXCLAMATION OR MB_OK
END IF

hwnd = createwindow(gszclassname ,_
"My RichEdit 1.0" ,_
WS_OVERLAPPEDWINDOW ,_
CW_USEDEFAULT ,_
CW_USEDEFAULT ,_
230 ,_
250 ,_
0 ,_
CreateMenu() ,_
hinstance ,_
0)

IF ( hwnd=0 ) THEN
messagebox 0,"window creation failed","error",MB_ICONEXCLAMATION OR MB_OK
winmain=0
EXIT FUNCTION
END IF


showwindow(hwnd,ncmdshow)
updatewindow hwnd

WHILE getmessage(msg,0,0,0)>0
translatemessage(msg)
dispatchmessage(msg)
WEND

winmain=msg.wparam
END FUNCTION
Reply
#4
It's a problem with numeric escape sequencies, FB since ver 0.12 evaluates at compile time the chr$(const expression) to a numeric escape sequence if "const expression" is <= 27, but as GAS uses the same format as in C, if you do: "\13123" where \13 should be the newline, \131 will be escaped, as GAS (the GNU assembler) has no idea where to stop.

I fixed it outputing "\13""123", as it would be done in C, the patch will be on the next release..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)