Call Absolute Help

 BBS: Inland Empire Archive
Date: 04-01-92 (22:32)             Number: 111
From: JEAN CREPEAU                 Refer#: NONE
  To: MICHAEL ORCHEKOWSKI           Recvd: NO  
Subj: Call Absolute Help             Conf: (2) Quik_Bas
In a message to ALL, MICHAEL ORCHEKOWSKI wrote:

MO=>  While  compiling  a  VERY  large  source  program, I ran across these
    error(s). I used the following compile syntax:
MO=> BC /W /X /V /E QFILE.BAS;
MO=> And this is the result:
MO=> Microsoft (R) QuickBASIC Compiler Version 4.50 (C) Copyright Microsoft
    Corporation 1982-1988. All rights reserved. Simultaneously published in
    the      U.S.      and      Canada.            1592                25D0
    UpdateCtrlValue  _  "FldBdr",  EITHER(FrmTbl(f).Hgt  >  1, TRUE, FALSE)
    _                                                     ^  Parameter type
    m i s  m a t  c h               1  D F E                        2 5 D 0
    UpdateCtrlValue _  "Check1", EITHER(FldTbl(f).Fmt  AND 1,  TRUE, FALSE)
    _                                                      ^ Parameter type
    m i s  m a t  c h               1  E 4 F                        2 5 D 0
    UpdateCtrlValue _  "Check2", EITHER(FldTbl(f).Fmt  AND 2,  TRUE, FALSE)
    _                                                      ^ Parameter type
    mismatch
MO=> Out of memory

MO=> 43933 Bytes Available     0 Bytes Free

MO=>     0 Warning Error(s)     4 Severe  Error(s)

        The Parameter type mismatch happens when you specify an argument of
a wrong type. I don't see  the entire line (which would have  been useful),
but the problem seems to come from your function EITHER. The Parameter type
mismatch happens right after the variable (or constant) FALSE all the time.
So I would say that the type of FALSE is wrong... Probably it's an  INTEGER
type and your program intended to get a SINGLE or something else. Check def
DECLARER FUNCTION EITHER and the type of FALSE.

        How to correct that? You can change either type, or use one the the
conversion functions, ie. CINT,  CLNG, CSNG or CDBL.  Just ask if you  need
more information about these functions.

        And the  worst is  that you  run out  of memory!!!  That means your
symbol table is full! To correct  that, use the /S option (that  will write
the string constants in the .OBJ  file instead of in the symbol  table...).
The other way to correct that, is to split your program into many  modules.
You put the  subroutines/functions in a  or many different  .BAS files. you
compile all your  .BAS files into  multiple .OBJ files  and then, with  the
linker, you link all the .OBJ  files into a single .EXE file.  Your program
will be much easier to read, and debug!
                Jean
---
 * Origin: INTERACESS Montreal (QC) Canada (514) 528-1415 (1:167/280)
Outer Court
Echo Basic Postings

Books at Amazon:

Back to BASIC: The History, Corruption, and Future of the Language

Hackers: Heroes of the Computer Revolution (including Tiny BASIC)

Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution

The Advent of the Algorithm: The Idea that Rules the World

Moths in the Machine: The Power and Perils of Programming

Mastering Visual Basic .NET