home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-11-29 | 2.0 KB | 95 lines | [TEXT/PJMM] |
- unit TStringDB;
-
- { ⌐1986-1989 Bill Stackhouse }
- { Stackhouse Software }
- { Natick, MA 01760 }
-
- interface
-
- {$IFC UNDEFINED UseListItem}
- {$SETC UseListItem = FALSE}
- {$ENDC}
- {$IFC UseListItem}
-
- uses
- TObject;
-
- type
- TStringDB = object(TObject)
- fCount: Longint;
- fCurOffset: Longint;
- fDB: Handle;
- procedure TStringDB.Init;
- function TStringDB.Count: Longint;
- procedure TStringDB.Add (newString: Str255);
- function TStringDB.ReadFirst: Str255;
- function TStringDB.ReadNext: Str255;
- function TStringDB.Error: Integer;
- procedure TStringDB.Free;
- override;
- end;
-
- {$ENDC}
-
- implementation
-
- {$IFC UseListItem}
-
- procedure TStringDB.Init;
- begin
- SELF.fCount := 0;
- SELF.fCurOffset := 0;
- SELF.fDB := nil;
- end; {TStringDB.Init}
-
- function TStringDB.Count: Longint;
- begin
- Count := SELF.fCount;
- end; {TStringDB.Count}
-
- procedure TStringDB.Add (newString: Str255);
- var
- stringLength: Integer;
- begin
- stringLength := Length(newString) + 1;
- if SELF.fDB = nil then
- SELF.fDB := NewHandle(stringLength)
- else
- SetHandleSize(SELF.fDB, GetHandleSize(SELF.fDB) + stringLength);
- if MemError = noErr then
- begin
- SELF.fCount := SELF.fCount + 1;
- BlockMove(@newString, Ptr(Longint(SELF.fDB^) + SELF.fCurOffset), stringLength);
- SELF.fCurOffset := SELF.fCurOffset + stringLength;
- end;
- end; {TStringDB.Add}
-
- function TStringDB.ReadFirst: Str255;
- begin
- SELF.fCurOffset := 0;
- ReadFirst := SELF.ReadNext;
- end; {TStringDB.ReadFirst}
-
- function TStringDB.ReadNext: Str255;
- var
- theString: Str255;
- begin
- BlockMove(Ptr(Longint(SELF.fDB^) + SELF.fCurOffset), @theString, 255);
- SELF.fCurOffset := SELF.fCurOffset + Length(theString) + 1;
- Readnext := theString;
- end; {TStringDB.ReadNext}
-
- function TStringDB.Error: Integer;
- begin
- Error := noErr;
- end; {TStringDB.Error}
-
- procedure TStringDB.Free;
- begin
- DisposHandle(SELF.fDB);
- inherited Free;
- end; {TStringDB.Free}
-
- {$ENDC}
-
- end.