home *** CD-ROM | disk | FTP | other *** search
/ Programming Tool Box / SIMS_2.iso / bp_3_94 / vbdos / zugriff.bas < prev   
BASIC Source File  |  1994-05-26  |  2KB  |  81 lines

  1. CONST TInteger = 1, TLong = 2, TSingle = 3
  2. CONST TDouble = 4, TCurrency = 5
  3.  
  4. TYPE AdressenTyp
  5.    Name AS STRING * 40
  6.    Strasse AS STRING * 40
  7.    Ort AS STRING * 40
  8.    Bestellungen AS INTEGER
  9. END TYPE
  10.  
  11. TYPE DatenBeschreibType
  12.    Name AS STRING * 40
  13.    Typ AS INTEGER
  14.    Offset AS INTEGER
  15. END TYPE
  16.  
  17. TYPE AdressenTypDummy
  18.    Text AS STRING * 162 ' 40+40+40+2!
  19. END TYPE
  20.  
  21. DIM SHARED DB(1 TO 4) AS DatenBeschreibType
  22.  
  23. DB_Init
  24.  
  25. ' Erzeugt das Feld, das den Datentyp beschreibt
  26. SUB DB_Init ()
  27.  
  28.    DIM i AS INTEGER, Offset AS INTEGER, Laenge AS INTEGER
  29.  
  30.    DB(1).Name = "NAME": DB(1).Typ = -40
  31.    DB(2).Name = "STRASSE": DB(2).Typ = -40
  32.    DB(3).Name = "ORT": DB(3).Typ = -40
  33.    DB(4).Name = "BESTELLUNGEN": DB(4).Typ = TInteger
  34.  
  35.    Offset = 1
  36.    FOR i = 1 TO UBOUND(DB)
  37.       DB(i).Offset = Offset
  38.       SELECT CASE DB(i).Typ
  39.       CASE TInteger:           Laenge = 2
  40.       CASE TSingle, TLong:     Laenge = 4
  41.       CASE TDouble, TCurrency: Laenge = 8
  42.       CASE ELSE:               Laenge = ABS(DB(i).Typ)
  43.       END SELECT
  44.       Offset = Offset + Laenge
  45.    NEXT
  46.  
  47. END SUB
  48.  
  49. ' Erzeugt einen String aus einem strukturierten Datentyp
  50. FUNCTION MakeString (Daten AS AdressenTyp) AS STRING
  51.  
  52.    DIM Dummy AS AdressenTypDummy
  53.    LSET Dummy = Daten
  54.    MakeString = Dummy.Text
  55.  
  56. END FUNCTION
  57.  
  58. ' Um einen Teilstring aus dem Gesamtdatenstring zu entnehmen
  59. FUNCTION NimmString (Daten AS STRING, Nr AS INTEGER) AS STRING
  60.  
  61.    NimmString = MID$(Daten, DB(Nr).Offset, ABS(DB(Nr).Typ))
  62.  
  63. END FUNCTION
  64.  
  65. ' Um eine Zahl aus dem Gesamtdatenstring zu entnehmen
  66. ' Typ = DOUBLE, damit allgemein verwendbar; verwenden Sie
  67. ' z.B. nur INTEGER, ist Änderung sinnvoll!
  68. FUNCTION NimmZahl (Daten AS STRING, Nr AS INTEGER) AS DOUBLE
  69.  
  70.    SELECT CASE DB(Nr).Typ
  71.    CASE TInteger: NimmZahl = CVI(MID$(Daten, DB(Nr).Offset, 2))
  72.    CASE TSingle: NimmZahl = CVS(MID$(Daten, DB(Nr).Offset, 4))
  73.    CASE TLong: NimmZahl = CVL(MID$(Daten, DB(Nr).Offset, 4))
  74.    CASE TDouble: NimmZahl = CVD(MID$(Daten, DB(Nr).Offset, 8))
  75.    CASE TCurrency: NimmZahl = CVC(MID$(Daten, DB(Nr).Offset, 8))
  76.    END SELECT
  77.  
  78. END FUNCTION
  79.  
  80.  
  81.