Hi. I have trying to use HLA. When I click in 'Build' button in RadAsm then I got error message: ''Error during process creation nmake build/ What is the nmake file? I have'nt got this...:(
install path:
c:\HLA
c:\Radasm
c:\Masm
I have download this from http://webster.cs.ucr.edu/
install path:
c:\HLA
c:\Radasm
c:\Masm
I have download this from http://webster.cs.ucr.edu/
Hi mistronr1
wow! one more error :)
NMAKE : fatal error U1073: don't know how to make 'build'
Stop.
Make error(s) occured.
what for i need nmake? i can compile project without this?
wow! one more error :)
NMAKE : fatal error U1073: don't know how to make 'build'
Stop.
Make error(s) occured.
what for i need nmake? i can compile project without this?
Try to compile using hla -v file.hla.
Peace
Peace
In addition to the previous errors mentioned in this thread, I see that there is also a missing file in the Dialog project included with RadAsm 2.0.3.2...comctl32.hhf is misssing.
My output with the Dialog project is...
Microsoft (R) Program Maintenance Utility Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
hla -w -c Dialog
Error in file "Dialog.hla" at line 6 :
Could not open include file "comctl32.hhf".
Near: << ) >>
NMAKE : fatal error U1077: 'hla' : return code '0x1'
Stop.
Make error(s) occured.
My output with the Dialog project is...
Microsoft (R) Program Maintenance Utility Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
hla -w -c Dialog
Error in file "Dialog.hla" at line 6 :
Could not open include file "comctl32.hhf".
Near: << ) >>
NMAKE : fatal error U1077: 'hla' : return code '0x1'
Stop.
Make error(s) occured.
Hi
The file comctl32.hhf is under ..\hla\include, I am using hla 1.54, did you set the path right ??
set hlainc=c:\hla\include
set hlalib=c:\hla\hlalib\hlalib.lib
set include = c:\hla\include;c:\masm32\include
set lib =c:\hla\hlalib
finally set path = %path%;c:\hla;c:\masm32\bin;c:\masm32\lib;c:\radasm
check your invironment variable under my compter/propaties/advanced....
good luck
peace
The file comctl32.hhf is under ..\hla\include, I am using hla 1.54, did you set the path right ??
set hlainc=c:\hla\include
set hlalib=c:\hla\hlalib\hlalib.lib
set include = c:\hla\include;c:\masm32\include
set lib =c:\hla\hlalib
finally set path = %path%;c:\hla;c:\masm32\bin;c:\masm32\lib;c:\radasm
check your invironment variable under my compter/propaties/advanced....
good luck
peace
Yeah..I tried to find it and it is missing from 1.55, and 1.54. I just finished downloading from Randy's site both versions and neither version (either .zip or .exe install file) had comctl32.hhf.
Seems Randy is hiding the *.hhf files somewhere.....:rolleyes:
Now where, oh where did Randy hide his files? ;)
Seems Randy is hiding the *.hhf files somewhere.....:rolleyes:
Now where, oh where did Randy hide his files? ;)
you are right, it's not there, anyway I hope this is not going to make randy mad at me..
I'll includet here...
just change the extension to .hhf
I'll includet here...
just change the extension to .hhf
Since version 1.54 no need to include comctl32.hhf. It is merged into w.hhf
You might want to read the following concerning
setting up RadASM to work with HLA:
http://webster.cs.ucr.edu/Page_win32/WindowsAsmPgm/html/Ch04.html
Cheers,
Randy Hyde
setting up RadASM to work with HLA:
http://webster.cs.ucr.edu/Page_win32/WindowsAsmPgm/html/Ch04.html
Cheers,
Randy Hyde
Hi. I was compile iczelion's tutorial progmam:
program aSimpleWindow;
#include( "w.hhf" ) // Standard windows stuff.
#include( "strings.hhf" ) // Defines HLA string routines.
#include( "memory.hhf" ) // Defines "NULL" among other things.
#include( "conv.hhf" )
static
hInstance: dword;
CommandLine: string;
readonly
ClassName: string := "SimpleWinClass";
AppName: string := "Our First Window";
static GetLastError:procedure; @external( "__imp__GetLastError@0" );
// The window procedure. Since this gets called directly from
// windows we need to explicitly reverse the parameters (compared
// to the standard STDCALL declaration) in order to make HLA's
// Pascal calling convention compatible with Windows.
//
// This is actually a function that returns a return result in
// EAX. If this function returns zero in EAX, then the event
// loop terminates program execution.
procedure WndProc( hWnd:dword; uMsg:uns32; wParam:dword; lParam:dword );
@nodisplay;
@stdcall;
begin WndProc;
// If the WM_DESTROY message comes along, then we've
// got to post a message telling the event loop that
// it's time to quit the program. The return value in
// EAX must be false (zero). The GetMessage function
// will return this value to the event loop which is
// the indication that it's time to quit.
if( uMsg = w.WM_DESTROY ) then
w.PostQuitMessage( 0 );
sub( eax, eax );
else
// If a WM_DESTROY message doesn't come along,
// let the default window handler process the
// message. Whatever (non-zero) value this function
// returns is the return result passed on to the
// event loop.
w.DefWindowProc( hWnd, uMsg, wParam, lParam );
endif;
end WndProc;
// WinMain-
//
// This is the "main" windows program. It sets up the
// window and then enters an "event loop" processing
// whatever messages are passed along to that window.
// Since our code is the only code that calls this function,
// we'll use the Pascal calling conventions for the parameters.
procedure WinMain
(
hInst: dword;
hPrevInst: dword;
CmdLine: string;
CmdShow: dword
);
@nodisplay;
var
wc: w.WNDCLASSEX;
msg: w.MSG;
hwnd: dword;
begin WinMain;
// Set up the window class (wc) object:
mov( @size( w.WNDCLASSEX ), wc.cbSize );
mov( w.CS_HREDRAW | w.CS_VREDRAW, wc.style );
mov( &WndProc, wc.lpfnWndProc );
mov( 0, wc.cbClsExtra );
mov( 0, wc.cbWndExtra );
mov( hInstance, wc.hInstance );
mov( w.COLOR_WINDOW+1, wc.hbrBackground );
mov( NULL, wc.lpszMenuName );
mov( ClassName, wc.lpszClassName );
// Get the icons and cursor for this application:
w.LoadIcon( NULL, val w.IDI_APPLICATION );
mov( eax, wc.hIcon );
mov( eax, wc.hIconSm );
w.LoadCursor( NULL, val w.IDC_ARROW );
mov( eax, wc.hCursor );
// Okay, register this window with Windows so it
// will start passing messages our way. Once this
// is accomplished, create the window and display it.
w.RegisterClassEx( wc );
w.CreateWindowEx
(
0,
ClassName,
AppName,
w.WS_OVERLAPPEDWINDOW,
w.CW_USEDEFAULT,
w.CW_USEDEFAULT,
w.CW_USEDEFAULT,
w.CW_USEDEFAULT,
0,
0,
hInst,
NULL
);
mov( eax, hwnd );
w.ShowWindow( hwnd, w.SW_SHOWNORMAL );
w.UpdateWindow( hwnd );
// Here's the event loop that processes messages
// sent to our window. On return from GetMessage,
// break if EAX contains false and quit the
// program.
forever
w.GetMessage( msg, NULL, 0, 0 );
breakif( !eax );
w.TranslateMessage( msg );
w.DispatchMessage( msg );
endfor;
mov( msg.wParam, eax );
end WinMain;
begin aSimpleWindow;
// Get this process' handle:
w.GetModuleHandle( NULL );
mov( eax, hInstance );
WinMain( hInstance, NULL, CommandLine, w.SW_SHOWDEFAULT );
// WinMain returns a return code in EAX, exit the program
// and pass along that return code.
w.ExitProcess( eax );
end aSimpleWindow;
in result program has simple winow... and simple console... i don't need console! I need a little programm. One reason why I uninstall Delhpi and download HLA this size of EXE less then 4kb... Or maybe for this task I need download fasm?
program aSimpleWindow;
#include( "w.hhf" ) // Standard windows stuff.
#include( "strings.hhf" ) // Defines HLA string routines.
#include( "memory.hhf" ) // Defines "NULL" among other things.
#include( "conv.hhf" )
static
hInstance: dword;
CommandLine: string;
readonly
ClassName: string := "SimpleWinClass";
AppName: string := "Our First Window";
static GetLastError:procedure; @external( "__imp__GetLastError@0" );
// The window procedure. Since this gets called directly from
// windows we need to explicitly reverse the parameters (compared
// to the standard STDCALL declaration) in order to make HLA's
// Pascal calling convention compatible with Windows.
//
// This is actually a function that returns a return result in
// EAX. If this function returns zero in EAX, then the event
// loop terminates program execution.
procedure WndProc( hWnd:dword; uMsg:uns32; wParam:dword; lParam:dword );
@nodisplay;
@stdcall;
begin WndProc;
// If the WM_DESTROY message comes along, then we've
// got to post a message telling the event loop that
// it's time to quit the program. The return value in
// EAX must be false (zero). The GetMessage function
// will return this value to the event loop which is
// the indication that it's time to quit.
if( uMsg = w.WM_DESTROY ) then
w.PostQuitMessage( 0 );
sub( eax, eax );
else
// If a WM_DESTROY message doesn't come along,
// let the default window handler process the
// message. Whatever (non-zero) value this function
// returns is the return result passed on to the
// event loop.
w.DefWindowProc( hWnd, uMsg, wParam, lParam );
endif;
end WndProc;
// WinMain-
//
// This is the "main" windows program. It sets up the
// window and then enters an "event loop" processing
// whatever messages are passed along to that window.
// Since our code is the only code that calls this function,
// we'll use the Pascal calling conventions for the parameters.
procedure WinMain
(
hInst: dword;
hPrevInst: dword;
CmdLine: string;
CmdShow: dword
);
@nodisplay;
var
wc: w.WNDCLASSEX;
msg: w.MSG;
hwnd: dword;
begin WinMain;
// Set up the window class (wc) object:
mov( @size( w.WNDCLASSEX ), wc.cbSize );
mov( w.CS_HREDRAW | w.CS_VREDRAW, wc.style );
mov( &WndProc, wc.lpfnWndProc );
mov( 0, wc.cbClsExtra );
mov( 0, wc.cbWndExtra );
mov( hInstance, wc.hInstance );
mov( w.COLOR_WINDOW+1, wc.hbrBackground );
mov( NULL, wc.lpszMenuName );
mov( ClassName, wc.lpszClassName );
// Get the icons and cursor for this application:
w.LoadIcon( NULL, val w.IDI_APPLICATION );
mov( eax, wc.hIcon );
mov( eax, wc.hIconSm );
w.LoadCursor( NULL, val w.IDC_ARROW );
mov( eax, wc.hCursor );
// Okay, register this window with Windows so it
// will start passing messages our way. Once this
// is accomplished, create the window and display it.
w.RegisterClassEx( wc );
w.CreateWindowEx
(
0,
ClassName,
AppName,
w.WS_OVERLAPPEDWINDOW,
w.CW_USEDEFAULT,
w.CW_USEDEFAULT,
w.CW_USEDEFAULT,
w.CW_USEDEFAULT,
0,
0,
hInst,
NULL
);
mov( eax, hwnd );
w.ShowWindow( hwnd, w.SW_SHOWNORMAL );
w.UpdateWindow( hwnd );
// Here's the event loop that processes messages
// sent to our window. On return from GetMessage,
// break if EAX contains false and quit the
// program.
forever
w.GetMessage( msg, NULL, 0, 0 );
breakif( !eax );
w.TranslateMessage( msg );
w.DispatchMessage( msg );
endfor;
mov( msg.wParam, eax );
end WinMain;
begin aSimpleWindow;
// Get this process' handle:
w.GetModuleHandle( NULL );
mov( eax, hInstance );
WinMain( hInstance, NULL, CommandLine, w.SW_SHOWDEFAULT );
// WinMain returns a return code in EAX, exit the program
// and pass along that return code.
w.ExitProcess( eax );
end aSimpleWindow;
in result program has simple winow... and simple console... i don't need console! I need a little programm. One reason why I uninstall Delhpi and download HLA this size of EXE less then 4kb... Or maybe for this task I need download fasm?
Compile with -w switch:
hla -w tut01.hla
for more Icz tutes convertion see:
http://www.asmcommunity.net/board/index.php?topic=12998
hla -w tut01.hla
for more Icz tutes convertion see:
http://www.asmcommunity.net/board/index.php?topic=12998
spasibo (russian)
in result program has simple winow... and simple console... i don't need console! I need a little programm. One reason why I uninstall Delhpi and download HLA this size of EXE less then 4kb... Or maybe for this task I need download fasm?
If producing small EXEs is your main goal, you
will need to read the following:
http://webster.cs.ucr.edu/Page_hla/WhitePapers/DoingUnits.html
Note, BTW, that 12K is probably a good practical minimum for a typical
Win32 program as you'll need code, data, and rdata sections in your
executable files. You *can* merge these sections together (so they
don't consume 4K each in the file), but this slows down the loading and
execution of your program a bit, so its worth is questionable.
Cheers,
Randy Hyde