Microsoft KB Archive/27323

= Passing Basic 2-Dimensional Variable-Length String Array to C =

Article ID: 27323

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 Q27323



SUMMARY
The following example demonstrates how to pass a two-dimensional array of variable-length strings from compiled Basic to Microsoft C.

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
REM ===== Basic PROGRAM =====

DECLARE SUB TwoStringArray CDECL (_           BYVAL p1o AS INTEGER,_            BYVAL p1s AS INTEGER) CLS DIM array$(4, 4) FOR i = 0 TO 4 FOR j = 0 TO 4 array$(i, j) = STRING$(5, 65 + (i + j)) + CHR$(0) NEXT j NEXT i CALL TwoStringArray(VARPTR(array$(0, 0)), VARSEG(array$(0, 0))) END

/* ===== C ROUTINE ===== */

struct struct_string{ int length; char *address; }; struct string_array{ struct struct_string x[5][5]; };
 * 1) include 

void TwoStringArray(array) struct string_array far *array; {   int i,j; for (i=0;i < 5; i++) {        for(j=0;j<5;j++) {            printf(&quot;  %s  &quot;,array->x[i][j].address); };        printf(&quot;\n&quot;); }; }

OUTPUT
AAAAA   BBBBB    CCCCC    DDDDD    EEEEE BBBBB   CCCCC    DDDDD    EEEEE    FFFFF CCCCC   DDDDD    EEEEE    FFFFF    GGGGG DDDDD   EEEEE    FFFFF    GGGGG    HHHHH EEEEE   FFFFF    GGGGG    HHHHH    IIIII

Additional query words: QuickBas BasicCom

Keywords: KB27323

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.