Microsoft KB Archive/27299

= Passing Basic Array of Variable-Length Strings to C =

Article ID: 27299

Article Last Modified on 8/16/2005

-

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 Q27299



SUMMARY
The following example demonstrates how to pass an 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 StringArray CDECL (_           BYVAL p1o AS INTEGER,_            BYVAL p2s AS INTEGER) CLS DIM array$(10) FOR i = 0 TO 10 array$(i) = STRING$(9, 65 + i) + CHR$(0) NEXT i CALL StringArray(VARPTR(array$(0)), VARSEG(array$(0))) END

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

struct struct_string{     /* structure that looks like a */ int length;          /* string descriptor           */ char *address; }; void StringArray(string) struct struct_string far *string; {   int i;    printf(&quot; Index  Length    String\n&quot;); for (i=0;i < 10; i++) {        printf(&quot;  %2d     %3d     %s\n&quot;,i,string->length,                string->address); string++; }; }
 * 1) include 

OUTPUT
 Index Length    String

0     10     AAAAAAAAA 1     10     BBBBBBBBB 2     10     CCCCCCCCC 3     10     DDDDDDDDD 4     10     EEEEEEEEE 5     10     FFFFFFFFF 6     10     GGGGGGGGG 7     10     HHHHHHHHH 8     10     IIIIIIIII 9     10     JJJJJJJJJ

Additional query words: QuickBas BasicCom

Keywords: KB27299

-

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

© Microsoft Corporation. All rights reserved.