Article ID: 27295
Article Last Modified on 11/21/2006
APPLIES TO
- Microsoft QuickBasic 4.0
- Microsoft QuickBASIC 4.0b
- Microsoft QuickBasic 4.5 for MS-DOS
- Microsoft BASIC Compiler 6.0
- Microsoft BASIC Compiler 6.0b
This article was previously published under Q27295
SUMMARY
The example below demonstrates how to pass a single-precision array from compiled Basic to Microsoft C by far reference.
This information about inter-language calling applies to QuickBasic Versions 4.00, 4.00b, and 4.50 for MS-DOS and to Microsoft Basic Compiler Versions 6.00 and 6.00b for MS-DOS and MS OS/2.
MORE INFORMATION
For more information about passing other types of parameters between Basic and C, and a list of which Basic and C versions are compatible with each other, query in the Microsoft Knowledge Base using the following word:
BAS2C
Code Example
===== Basic PROGRAM ===== DECLARE SUB FloatArray CDECL (_ BYVAL p1 AS INTEGER,_ BYVAL p2 AS INTEGER) DEFINT A-Z DIM i AS SINGLE DIM array(10) AS SINGLE CLS FOR i = 1 TO 10 array(i) = i + 100 NEXT i 'Array must be a FAR pointer, so offset and segment must be passed: CALL FloatArray(VARPTR(array(0)), VARSEG(array(0))) LOCATE 15, 1 PRINT "Back in Basic" FOR i = 1 TO 10 PRINT i, array(i) NEXT i END /* ===== C ROUTINE ===== */ #include <stdio.h> void FloatArray(array) float far *array; { int i; printf("Index Value\n"); for (i=0;i < 11; i++) { printf(" %d %f\n",i,array[i]); array[i]=array[i]+100; }; } ===== OUTPUT ===== Index Value 0 0.000000 1 101.000000 2 102.000000 3 103.000000 4 104.000000 5 105.000000 6 106.000000 7 107.000000 8 108.000000 9 109.000000 10 110.000000 Back in Basic 1 201 2 202 3 203 4 204 5 205 6 206 7 207 8 208 9 209 10 210
Additional query words: QuickBas BasicCom
Keywords: KB27295