qb45advr.hlp (
Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software,
purely for historical purposes.
If you're looking for up-to-date documentation, particularly for programming,
you should not rely on the information found here, as it will be woefully
out of date.
SADD Function Programming Example
◄QuickSCREEN► ◄Details► ◄Example► ◄Contents► ◄Index►
──────────────────────────────────────────────────────────────────────────────
SADD Function Programming Example
The following example uses SADD and LEN to pass a string to a function
written in C. The C function returns the ASCII value of a character at
a given position in the string.
The C program would be separately compiled and stored in a Quick library
or explicitly linked to form an .EXE file. Note that BYVAL is the
default for C.
'*** Programming example: SADD function ***
'
' Do not attempt to run this program unless you have already
' separately compiled the C function and placed it in a
' Quick library or linked it to the BASIC program.
'
' Pass a string to a C function using SADD and LEN.
DEFINT A-Z
' Declare the function;
DECLARE FUNCTION MyAsc CDECL(BYVAL A AS INTEGER, BYVAL B AS INTEGER, _
BYVAL C AS INTEGER)
A$="abcdefghijklmnopqrstuvwxyz"
PRINT "Enter a character position (1-26). Enter 0 to Quit."
DO
' Get a character position.
INPUT N
' End if the position is less than zero.
IF N<=0 THEN EXIT DO
' Call C function; the function returns the ASCII code of the
' character at position N in A$.
AscValue=MyAsc(SADD(A$),LEN(A$),N)
PRINT "ASCII value: ";AscValue;"Character: ";CHR$(AscValue)
LOOP
END
/* C function to return the ASCII value of the character
at position pos in string c of length len. */
int far myasc(c,len,pos)
char near *c;
int len, pos;
{
if(pos>len) return(c[--len]);/* Avoid indexing off end. */
else if (pos<1) return(c[0]);/* Avoid indexing off start. */
else
return(c[--pos]);/* pos is good. Return the character at
pos-1 because C arrays (strings) are
zero-indexed. */
}
Sample Output
Enter a character position (1-26). Enter -1 to Quit.
? 24
ASCII value: 120 Character: x
? -1