bas7advr.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.
StringRelease Routine Details
  ◄Syntax►  ◄Details►  ◄Example►                 ◄Contents►  ◄Index►  ◄Back►
──────────────────────────────────────────────────────────────────────────────
The StringRelease routine is used in mixed-language programming. A non-
BASIC routine uses StringRelease to deallocate variable-length strings
that have been transferred to BASIC's string space from the non-BASIC
routine.
 
StringRelease(string-descriptor%);
    ■ The preceding syntax is for the C language.
    ■ For C, MASM, Pascal, and FORTRAN examples, see Chapter 13,
      "Mixed-Language Programming with Far Strings" in the Programmer's Guide.
 
Usage Notes
    ■ Calls to the StringRelease routine are made from a non-BASIC routine
      to free up space in BASIC's data area.
 
      ║ Note: Use the StringRelease routine only to deallocate variable-
      ║       length strings that have been transferred to BASIC's string
      ║       space from a non-BASIC routine. Never use it on strings
      ║       created by BASIC. Doing so will cause unpredictable
      ║       results.
 
    ■ BASIC automatically deallocates strings allocated by BASIC. However,
      strings that have been transferred to BASIC from a non-BASIC
      routine should be deallocated from the non-BASIC routine using the
      StringRelease routine. (The reason for this is that StringAssign
      transfers strings but not string descriptors. Without the string
      descriptor, BASIC cannot deallocate the string; the deallocation
      has to be done from the non-BASIC routine with StringRelease.)
    ■ As an example, assume that you have passed a string from a MASM
      routine to BASIC's string space using StringAssign. To deallocate
      this string, assuming a descriptor for the variable-length string
      exists at offset descriptor, the code is:
 
        .model
        extrn        stringrelease: far
 
        .code
        lea          ax, descriptor        ; offset of descriptor
        push         ax
        call         stringrelease
 
    ■ For detailed instructions on mixed-language programming with strings,
      see Chapter 12, "Mixed-Language Programming" and Chapter 13,
      "Programming with Near Strings" in the Programmer's Guide.