DATABASE STRUCTURE

 BBS: Inland Empire Archive
Date: 01-09-93 (04:55)             Number: 344
From: WES GARLAND                  Refer#: NONE
  To: RICK NEWMAN                   Recvd: NO  
Subj: DATABASE STRUCTURE             Conf: (2) Quik_Bas
'=======CONTINUED FROM PREVIOUS MESSAGE=======

Function GetRecipe$ (Handle as integer, RHdr as RecipeType)
' Gets a recipe starting at the current file position

Dim Str as string

Str = string$(0,len(RHdr))  ' Creates a string the length of the header,
                            ' filled with nulls. Args MIGHT
be reversed.. :-) Get Handle, ,Str
StrToType (Str, RHdr)       ' Read in the RecipeHeader
Str = string$(0,RHdr.RecipeLen)
Get Handle, ,Str            ' Read in the recipe. NOTE! The recipe CANNOT
                            ' be longer than the max size of a string using
                            ' this exact method. I THINK
that's about 11K.. :) GetRecipe = Str
End FUNCTION

' Main Code starts here...
Handle = FREEFILE
open "recipes.dat" for binary as Handle

' First, we'll view a recipe
For N=1 to 3                ' Lets view the third recipe
    Temp = GetRecipe (Handle, RecipeHeader)
    ' Its not really computer-sciencely correct to have a function
    ' return TWO values - the result and RecipeHeader, but what the
    ' hell. Convert to a sub if you're feeling useless. :-) Next N

print "Title: "+RecipeHeader.Title
print "Keywords: "+RecipeHeader.KeyWord1 + ",
"+RecipeHeaderKeyWord2 print string$("-",79)  ' Prints 79
minusses. Args might be reversed? print Temp

' Now, we'll write one!
seek (Handle,LOF(Handle))  ' Go to the end of the file. Not
sure about Syntax input "Recipe Name: ",RecipeHeader.Title
input "Keyword 1: ",RecipeHeader.KeyWord1
input "Keyword 2: ",RecipeHeader.KeyWord2

 ' INSERT YOUR EDITOR HERE. MAYBE A SHELL, WITH Q.EXE LOADED IN, THEN
 ' COPIED FROM A TEMP FILE TO A VARIABLE, USING THE LOF() COMMAND TO
 ' CALCULATE THE LENGTH OF THE RECIPE

' Write routine expects the recipe in Str, and recipe length in FileLen

RecipeHeader.RecipeLen = FileLen
Temp = TypeToStr(RecipeHeader)
Put Handle, ,Temp
Put Handle, ,Str

close Handle
print "Hello, World!"

Let me know if you find any of this useful. Thanks to Scott
Dudley for writing the Max IPC page routines in a format
eerily similar to this :-)

Cheers,
Wes

PS: This is just off the top of my head, so there are likely syntax errors
    all over the place, and maybe a bug or two. Check your manual for
    details! :-)

--- Maximus 2.01wb
 * Origin: Terminal Velocity Kingston *CANADA* (613)542-4613/6594, (1:249/128)
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