Subj : Final code To : mark lewis From : Sean Dennis Date : Fri May 07 2010 11:18 pm Hello, mark. Friday May 07 2010 at 10:17, you wrote to me: ml> here's another post that only pulls out the space delimited fields and ml> this one is zero-based... field 0 is 'A', 1 is 'Daryl', 3 is the comma ml> delimited section and so on... Thanks for the code; I'll keep it in my archives. I don't normally post my code "out in the open", but I only think it's right since it's based on what you did. I need to do a bit more error checking in this code. You'll see calls to functions that I use in my doorkit unit, but I think you'll get the jist of it: ===Cut=== { ------------------------------------------------------------------- PROCEDURE ReadGTUSER(Path : String); Reads and parses GTUSER.BBS properly for use with my doors Based on code written by Mark Lewis ------------------------------------------------------------------- } Procedure ReadGTUSER(Path : String); Var Count : Integer; Gtstr, Result_Str, Tempdata : String; Gtfile : Text; Function ExtractWord(Str : String; N : Integer) : String; Var Count, I , Len : Integer; Done : Boolean; Retstr : String; Begin Retstr := ''; Len := Length(Str); Count := 0; I := 1; Done := False; While (I <= Len) And (Not Done) Do Begin While ((I <= Len) And ((Str[I] = #32) Or (Str[I] = #9) Or (Str[I] = ':'))) Do Inc(I); If I <= Len Then Inc(Count); If Count = N Then Begin Retstr[0] := #0; If (I > 1) Then If Str[I-1] = ';' Then Retstr := ';'; While ((I <= Len) And ((Str[I] <> #32) And (Str[I] <> #9) And (Str[I] <> ':'))) Do Begin Inc(Retstr[0]); Retstr[Ord(Retstr[0])] := Str[I]; Inc(I); End; Done := True; End Else While ((I <= Len) And ((Str[I] <> #32) And (Str[I] <> #9) And (Str[I] <> ':'))) Do Inc(I); End; Extractword := Retstr; End; Begin Assign(GTFile, Path + 'gtuser.bbs'); {$I-}Reset(GTFile);{$I+} ReadLn(GTFile, GTStr); Close(GTFile); { This is /really/ ugly, but there's really no better way to do what I want to do. The comport and node number have been set elsewhere, but we need to check the comport setting to make sure it's right.} If (fk_Fossil.Port = 0) Then Begin ClrScr; NL; pWriteLn('|12WARNING: |14Comport not set on command line for GTUSER.BBS!|07'); fk_DeInitFossil; End; Count := 2; { Read in the first name and last name then concatenate together for FKFOSSIL } TempData := ''; TempData := ExtractWord(GTStr, Count); Inc(Count); TempData := TempData + ' ' + ExtractWord(GTStr, Count); fk_Client.Name := TempData; TempData := ''; { Jump to the DCE rate } Count := Count + 7; fk_Fossil.Baud := StrToInt(ExtractWord(GTStr, Count)); Inc(Count); { Determine if ANSI is used or not } TempData := ExtractWord(GTStr, Count); If (TempData = 'ANSI') or (TempData = 'RIPSCRIP') Then fk_Client.ScreenType := 1 Else fk_Client.ScreenType := 0; { Time left for this call } Count := Count + 2; fk_Client.TimeLeft := StrToInt(ExtractWord(GTStr, Count)); End; === Cut === Later, Sean //sean@nsbbs.info | http://nsbbs.info | ICQ: 19965647 .... Friends may come and go, but enemies accumulate. --- GoldED/2 3.0.1 * Origin: Nocturnal State BBS - (423) 926-7999 - bbs.nsbbs.info (1:18/200) .