errors when passing pointers from a unit
Fri, 25 Apr 1997 14:25:08 -0700
I don't realy understand this. I'm new to Pascal tho I've programmed in C
for quite some time.
I have a unit that dose some _basic_ mode 13h graphics stuff. In it is an
off-screen buffer created my allocating a type defined as:
type mode13VideoBuffer = array[1..64000] of char;
var
gBuffer"^mode13VideoBuffer;
I have 2 procedures that set up the video mode (by calling some external C
functions) and allocate this buffer.
procedure InitGraphics;
begin
{set video mode and other initalization stuff}
new(gBuffer);
end;
procedure TextMode;
begin
{reset the display and clean up video stuff}
dispose(gBuffer);
end;
All my graphic functions draw to this buffer. To get it to the screen I
have a procedre that calls an external C function:
procedure gUpdate;
begin
screenblit( gBuffer);
end;
It is in this C function that I crash. Here's the screenblit function:
//uses libc.a functions
void screenblit( unsigned char* buf)
{
short video = __dpmi_segment_to_descriptor(0xa000);
movedata(_my_ds(), (int)buf, video, 0, 320*200);
}
This only crashes when I pass it a pointer from my unit. I can do the exact
same allocation from the main program file and it will work OK.
Am I getting confused on how pointers work in C and how they work in Pascal
(I thought that they were pretty much the same except for type checking and
"true" dynamic allocation)?
This how I compile and link:
I create a lib from the compiled .o files from my units.
I then compile my test program linking in the lib:
gpc -g -o gtest.exe gtest.pas -lglib
^^^^
This is my lib
NOTE: I can get this system to work in C by replicating the units in .h and
.c files and linking the object files on the commanline.
HELP?
-SC
skye (s_c@iname.com)
HTML conversion by Lluís de Yzaguirre i Maura
Institut de Lingüística Aplicada -
Universitat "Pompeu Fabra"
e-mail: de_yza@upf.es