News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests
NB: Posting URL's See here: Posted URL Change

Main Menu

Linked List Database

Started by RuiLoureiro, May 27, 2014, 12:49:27 AM

Previous topic - Next topic

RuiLoureiro

Hi

****--The Linked List Database v7 by RuiLoureiro--****

        Sometimes, there are people that comes here
        with questions that has something to do
        with this, but they use Irvine...
        thing that i refuse to use. I don't like
        to use Irvine ...
        and we don't learn anything with it.
       
        I wrote a set of basic procedures to build a
        complete linked list database (LkdList7.inc).

        I wrote an example program that shows how
        to use the procedures (LkdList7.asm).

        We may use some macros to write a program.
        All macros used are in LkdList7.mac.

        For detailed information, read LkdList7.txt
       
        Try to build your own example, it is easy.

        If you don't mind, try to test it and
        say something about it.

        I hope, this can help you.
        Good luck !  :t
        RuiLoureiro

:biggrin: :biggrin:
                EDIT:  thank you ...my friend Dave       :t
                           thank you ...my friend Gunther  :t

               EDIT: now we have v8 AND v9  AND v10 also. See the last post.
Quote
        Files:
                LkdList7.inc <---- set of basic procedures
                LkdList7.glb  ----  global (protos ...)
                LkdList7.mac  ----  macros
                LkdList7.equ  ----  equates
                LkdList7.frm  ----  format data
                LkdList7.dat  ----  test data
                LkdList7.txt <---- text about basic information

                LkdList7.asm <---- basic complete example

dedndave


Gunther

Good work, Rui.  :t

Gunther
You have to know the facts before you can distort them.

RuiLoureiro

#3
Hi all

****--The Linked List Database v8 by RuiLoureiro--****


        ----------------------------------------
        The basic changes from v7 to v8
        ----------------------------------------

            1. The basic data for each project are in LkdList8.prj;
             
            2. We need to define the Complete Record Format
               _FrmRecord that is in LkdList8.prj;
               
            3. To insert any type of data we use InsertLkdList;

            4. To modify any type of field of any current record
               we use ModCurrentLkdList;
               
            5. To find, we use FindFirstLkdList / FindNextLkdList

            6. To load any field we use LoadCurrentData;

               (in this way, we don't need to use NODE.LkdDataA,
                NODE.LkdDataB, etc. but 1,2,3, etc.)
       
        Good luck !
        RuiLoureiro

Quote
        Files:
                LkdList8.inc <---- set of basic procedures
                LkdList8.prj <--->  project data
                 
                LkdList8.glb  ----  global (protos ...)
                LkdList8.mac  ----  macros
                LkdList8.equ  ----  equates
                LkdList8.frm  ----  format data
                LkdList8.dat  ----  test data
                LkdList8.txt <---- text about basic information

                LkdList8.asm <---- basic complete example
               
        note: If you want to build your own example easily,
              use LkdList8.prj, modify the data, and it is ready.
              If you want to use LkdList8.asm, modify
              LkdList8.frm also.

RuiLoureiro

#4
Hi

****--The Linked List Database v9 by RuiLoureiro--****

        -----------------------------------------
        The basic changes from v8 to v9
        -----------------------------------------

            #1.  The record length must be 2^N => from 32,64, 128,... to 4096

            #2.  Data Types:           
                             $Char       -> type character
                             $String     -> type string
                             $Integer   -> type integer
                             $Real4      -> type real4
                             $Real8      -> type real8
                             $Real10    -> type real10

            #3.  Each field should be:

                             $FieldNrm      -> normal
                             $FieldLkd      -> linked list
           
            #4.  We start a new project in the file LkdList9.prj
                     and we need to do this:

                        1. define:  AllocRecords
                                         NumOfLkdFields      <- linked list fields
                                         NumOfNrmFields      <- normal fields

                        2. use SETRECORDSIZEMACRO macro to define the record length

                        3. define:  the length of each string field:

                                    LengthOfFieldA
                                    LengthOfFieldB
                                    ...
           
                        4. define the NODE structure
                               
                        5. define: _FrmRecord (complete record format)

            #5.  Now, we open the file LkdList9.frm and modify the tables of data
                    used by LkdList.asm and some data in LkdList.asm.

            #6.  It is nearly done.  ;)
         
         +++++++++++++++++++++++++++
          Useful MACROS used in this example
         -------------------------------------------------

      ----------------------
         FOR PRINTING
      ----------------------

                printit     iLin, kCol, Quoted_Text

            printstring     iLin, kCol, pStr

           printinteger     iLin, kCol, kInt

           printtextint     iLin, kCol, kInt, Quoted_Text
           
      ----------------------
           FOR INPUT
      ----------------------
     
              presskey      iLin, kCol

               inkeyLC      iLin, kCol, Quoted_Text

           inputstring      iLin, kCol, buffer, kLen, Quoted_Text

          inputinteger      iLin, kCol, kInt, Quoted_Text

         inputintegerM      iLin, kCol, kInt, Quoted_Text

            where:
                    iLin    - line          iCol    - column

                    kInt    - integer       kLen    - length

      ----------------------
           EXAMPLES
      ----------------------           

                    printit      2, 31, "Linked list DATABASE v7 by Rui Loureiro"

                printstring      4,  1, addr _headerA

                    presskey    19, 10

                     inkeyLC    15, 10, "Type the correct function number"

                 inputstring    5,  10, _FuncString, 1, "Do you want to kill all records (y/n) ?"

               inputintegerM    17, 10, _IntegerK, "New Score: "


                In the given example, we define 5 fields in linked list
                - 3 for strings and 2 for integers - plus 2 normal -
                - 1 for char and 1 for string.

                In the next version, we will use real4, real8, real10.
                The procedures will be improved also.
               
        Good luck !
        RuiLoureiro

EDIT: i use the same file name - LkdList - plus an extension
           .inc, .prj, .glb, ..., .asm, etc BECAUSE we work more
           confortably and quickly.
           When we want to change something, we want to change it
           in one file. After changing, we assemble and run to test that file.
           I use qeditor by hutch. This is the reason why i have
           many files and not macros.inc, format.inc ... etc. etc.

         
Quote
        Files:
                LkdList9.inc <---- set of basic procedures
                LkdList9.prj <--->  project data
                 
                LkdList9.glb  ----  global (protos ...)
                LkdList9.mac  ----  macros
                LkdList9.equ  ----  equates
                LkdList9.frm  ----  format data
                LkdList9.dat  ----  test data
                LkdList9.txt <---- text about basic information

                LkdList9.asm <---- basic complete example
               
        note: If you want to build your own example easily,
              use LkdList9.prj, modify the data, and it is ready.
              If you want to use LkdList9.asm, modify
              LkdList9.frm also and some data in LkdList9.asm.

Gunther

Rui,

thank you for providing the material. You're a hard working man.  :t

Gunther
You have to know the facts before you can distort them.

RuiLoureiro

Hi

****--The Linked List Database v10 by RuiLoureiro--****

        ------------------------------------------
        The basic changes from v9 to v10
        -------------------------------------------

            . We dont need to define the record length

        This example shows fields $Char, $Real4, $Real8, $Real10
        but not in linked list. They are normal fields.

        Now, after deleting one record, we may choose FindNextRecord
        not FindFirst.

        The procedures was improved.

        Good luck !  :t
        RuiLoureiro

HERE, Flag is $Char

                              -------------------------------------------
                               Linked list DATABASE v10 by Rui Loureiro
                              -------------------------------------------
First Name    Last Name      Birth Date   ID        Score    Flag Note
--------------------------------------------------------------------------------------
almond        badger         2040-09-27   22        -22      V    This is the record 22
almond        piglet         2040-03-16   16        -16      P    This is the record 16
almond        giraffe        2030-09-15   12        -12      L    This is the record 12
apple         dog            2080-12-01   9         -9       I    This is the record 9
apricot       ant            2030-08-10   5         -5       E    This is the record 5
banana        ass            2050-08-28   23        -23      X    This is the record 23
cherry        lion           2030-10-12   11        -11      K    This is the record 11
fig           cow            2070-11-29   20        -20      T    This is the record 20
grape         rat            2060-07-09   24        -24      Y    This is the record 24
lemon         bear           2020-06-19   13        -13      M    This is the record 13
loquat        rabbit         2030-02-13   17        -17      Q    This is the record 17
mango         alligator      2030-12-20   19        -19      S    This is the record 19
melon         puppy          2020-10-26   21        -21      U    This is the record 21
melon         cat            2030-11-14   10        -10      J    This is the record 10
melon         sheep          2030-10-15   3         -3       C    This is the record 3
mulberry      ape            2030-04-17   15        -15      O    This is the record 15
orange        elephant       2040-11-05   2         -2       B    This is the record 2
peach         pig            2030-05-06   7         -7       G    This is the record 7
pear          tiger          2050-05-18   14        -14      N    This is the record 14
pineapple     monkey         2080-06-19   25        -25      Z    This is the record 25
quince        zebra          2070-09-11   4         -4       D    This is the record 4
strawberry    porcupine      2030-07-09   6         -6       F    This is the record 6
walnut        buffalo        2060-01-05   18        -18      R    This is the record 18
walnut        wolf           2010-06-01   8         -8       H    This is the record 8
walnut        lion           2020-12-15   1         -1       A    This is the record 1

                Number of records= 25

Press any key to continue ...


HERE, we have Real4, Real8, Real10

                              -------------------------------------------
                               Linked list DATABASE v10 by Rui Loureiro
                              -------------------------------------------
First Name    Last Name      Birth Date     Real4          Real8          Real10
--------------------------------------------------------------------------------------
almond        badger         2040-09-27     93.849998      93.850000      93.850000
almond        piglet         2040-03-16     -0.250000      -0.250000      -0.250000
almond        giraffe        2030-09-15     32.250000      32.250000      32.250000
apple         dog            2080-12-01     12.250000      12.250000      12.250000
apricot       ant            2030-08-10     -15.750000     -15.750000     -15.750000
banana        ass            2050-08-28     93.849998      93.850000      93.850000
cherry        lion           2030-10-12     21.150000      21.150000      21.150000
fig           cow            2070-11-29     93.849998      93.850000      93.850000
grape         rat            2060-07-09     93.849998      93.850000      93.850000
lemon         bear           2020-06-19     63.230000      63.230000      63.230000
loquat        rabbit         2030-02-13     -4.290000      -4.290000      -4.290000
mango         alligator      2030-12-20     72.250000      72.250000      72.250000
melon         puppy          2020-10-26     93.849998      93.850000      93.850000
melon         cat            2030-11-14     33.849998      33.850000      33.850000
melon         sheep          2030-10-15     13.230000      13.230000      13.230000
mulberry      ape            2030-04-17     -15.750000     -15.750000     -15.750000
orange        elephant       2040-11-05     2.250000       2.250000       2.250000
peach         pig            2030-05-06     -4.270000      -4.270000      -4.270000
pear          tiger          2050-05-18     -12.550000     -12.550000     -12.550000
pineapple     monkey         2080-06-19     93.849998      93.850000      93.850000
quince        zebra          2070-09-11     -2.550000      -2.550000      -2.550000
strawberry    porcupine      2030-07-09     -3.250000      -3.250000      -3.250000
walnut        buffalo        2060-01-05     34.590000      34.590000      34.590000
walnut        wolf           2010-06-01     14.590000      14.590000      14.590000
walnut        lion           2020-12-15     1.150000       1.150000       1.150000

                Number of records= 25

Press any key to continue ...

Gunther

You have to know the facts before you can distort them.

RuiLoureiro

 :biggrin:
Hi all,

****--The Linked List Database v11 by RuiLoureiro--****

        Now, all fields are in linked list:

                . string
                . integer
                . char
                . real 4
                . real 8
                . real 10
       
        I think that it is unusual to set real numbers
        in linked list. In any way, i tried to set it.

        Good luck !  :t
        RuiLoureiro

          -------------------------------------------------
           Show all records by fields First-to-Last
          -------------------------------------------------
          1. Sorted by First name
          2. Sorted by Last name
          3. Sorted by Birth date
          4. Sorted by ID
          5. Sorted by Score
          6. Sorted by Flag
          7. Sorted by Real4
          8. Sorted by Real8
          9. Sorted by Real10

          10. Exit
          ------------------------------------------
          Type the function number: 7

Real4         First Name     Last Name      Birth Date     Real8          Real10
--------------------------------------------------------------------------------------
-15.750000    ape            mulberry       2030-04-17     -15.750000     -15.750000
-15.750000    ant            apricot        2030-08-10     -15.750000     -15.750000
-12.550000    tiger          pear           2050-05-18     -12.550000     -12.550000
-4.290000     rabbit         loquat         2030-02-13     -4.290000      -4.290000
-4.270000     pig            peach          2030-05-06     -4.270000      -4.270000
-3.250000     porcupine      strawberry     2030-07-09     -3.250000      -3.250000
-2.550000     zebra          quince         2070-09-11     -2.550000      -2.550000
-0.250000     piglet         almond         2040-03-16     -0.250000      -0.250000
1.150000      lion           walnut         2020-12-15     1.150000       1.150000
2.250000      elephant       orange         2040-11-05     2.250000       2.250000
12.250000     dog            apple          2080-12-01     12.250000      12.250000
13.230000     sheep          melon          2030-10-15     13.230000      13.230000
14.590000     wolf           walnut         2010-06-01     14.590000      14.590000
21.150000     lion           cherry         2030-10-12     21.150000      21.150000
32.250000     giraffe        almond         2030-09-15     32.250000      32.250000
33.849998     cat            melon          2030-11-14     33.850000      33.850000
34.590000     buffalo        walnut         2060-01-05     34.590000      34.590000
63.230000     bear           lemon          2020-06-19     63.230000      63.230000
72.250000     alligator      mango          2030-12-20     72.250000      72.250000
93.849998     monkey         pineapple      2080-06-19     93.850000      93.850000
93.849998     rat            grape          2060-07-09     93.850000      93.850000
93.849998     ass            banana         2050-08-28     93.850000      93.850000
93.849998     badger         almond         2040-09-27     93.850000      93.850000
93.849998     puppy          melon          2020-10-26     93.850000      93.850000
93.849998     cow            fig            2070-11-29     93.850000      93.850000

                Number of records= 25

Press any key to continue ..



          ------------------------------------------------
           Show all records by fields Last-to-First
          -------------------------------------------------
          1. Sorted by First name
          2. Sorted by Last name
          3. Sorted by Birth date
          4. Sorted by ID
          5. Sorted by Score
          6. Sorted by Flag
          7. Sorted by Real4
          8. Sorted by Real8
          9. Sorted by Real10

          10. Exit
          ------------------------------------------
          Type the function number: 9


Real10        First Name     Last Name      Birth Date     Real4          Real8
--------------------------------------------------------------------------------------
93.850000     cow            fig            2070-11-29     93.849998      93.850000
93.850000     puppy          melon          2020-10-26     93.849998      93.850000
93.850000     badger         almond         2040-09-27     93.849998      93.850000
93.850000     ass            banana         2050-08-28     93.849998      93.850000
93.850000     rat            grape          2060-07-09     93.849998      93.850000
93.850000     monkey         pineapple      2080-06-19     93.849998      93.850000
72.250000     alligator      mango          2030-12-20     72.250000      72.250000
63.230000     bear           lemon          2020-06-19     63.230000      63.230000
34.590000     buffalo        walnut         2060-01-05     34.590000      34.590000
33.850000     cat            melon          2030-11-14     33.849998      33.850000
32.250000     giraffe        almond         2030-09-15     32.250000      32.250000
21.150000     lion           cherry         2030-10-12     21.150000      21.150000
14.590000     wolf           walnut         2010-06-01     14.590000      14.590000
13.230000     sheep          melon          2030-10-15     13.230000      13.230000
12.250000     dog            apple          2080-12-01     12.250000      12.250000
2.250000      elephant       orange         2040-11-05     2.250000       2.250000
1.150000      lion           walnut         2020-12-15     1.150000       1.150000
-0.250000     piglet         almond         2040-03-16     -0.250000      -0.250000
-2.550000     zebra          quince         2070-09-11     -2.550000      -2.550000
-3.250000     porcupine      strawberry     2030-07-09     -3.250000      -3.250000
-4.270000     pig            peach          2030-05-06     -4.270000      -4.270000
-4.290000     rabbit         loquat         2030-02-13     -4.290000      -4.290000
-12.550000    tiger          pear           2050-05-18     -12.550000     -12.550000
-15.750000    ant            apricot        2030-08-10     -15.750000     -15.750000
-15.750000    ape            mulberry       2030-04-17     -15.750000     -15.750000

                Number of records= 25

Press any key to continue ...