diff --git a/mdl/m_ops.pas b/mdl/m_ops.pas index 19af7e2..7bcb746 100644 --- a/mdl/m_ops.pas +++ b/mdl/m_ops.pas @@ -28,9 +28,9 @@ ------------------------------------------------------------------------- } -{.$DEFINE DEBUG} -{$DEFINE RELEASE} -{.$DEFINE LOGGING} +{$DEFINE DEBUG} +{.$DEFINE RELEASE} +{$DEFINE LOGGING} { ------------------------------------------------------------------------- } diff --git a/mystic/bbs_ansi_help.pas b/mystic/bbs_ansi_help.pas index 8eff69d..e8a92e8 100644 --- a/mystic/bbs_ansi_help.pas +++ b/mystic/bbs_ansi_help.pas @@ -20,9 +20,6 @@ Unit bbs_Ansi_Help; Interface -Uses - bbs_Ansi_MenuBox; - Const mysMaxHelpTest = 200; mysMaxHelpKeyLen = 20; @@ -40,7 +37,6 @@ Type End; TAnsiMenuHelp = Class - Box : TAnsiMenuBox; HelpFile : Text; CurKey : String[mysMaxHelpKeyLen]; Text : Array[1..mysMaxHelpTest] of TLineInfoRec; @@ -48,8 +44,9 @@ Type Constructor Create; Destructor Destroy; Override; - Procedure OpenHelp (X1, Y1, X2, Y2: Byte; FN, Keyword: String); + Function ReadKeywordData : Boolean; + Procedure OpenHelp (Str: String); Function StripLinks (Str: String) : String; End; @@ -57,7 +54,8 @@ Implementation Uses m_Strings, - bbs_Core; + bbs_Core, + bbs_Ansi_MenuBox; Constructor TAnsiMenuHelp.Create; Begin @@ -93,7 +91,6 @@ Begin Result := Str; End; - Function TAnsiMenuHelp.ReadKeywordData : Boolean; Var Str : String; @@ -167,14 +164,22 @@ Begin Result := Done And (Lines > 0); End; -Procedure TAnsiMenuHelp.OpenHelp (X1, Y1, X2, Y2: Byte; FN, Keyword: String); +Procedure TAnsiMenuHelp.OpenHelp (Str: String); +Const + WinX1 : Byte = 2; + WinY1 : Byte = 2; + WinX2 : Byte = 78; + WinY2 : Byte = 22; Var - TopPage : Integer; - CurLine : Integer; - CurLPos : Byte; - WinSize : Integer; - LastPos : Byte; - LastKey : Array[1..10] of String[mysMaxHelpKeyLen]; + FN : String; + Template : String; + Keyword : String; + TopPage : Integer; + CurLine : Integer; + CurLPos : Byte; + WinSize : Integer; + LastPos : Byte; + LastKey : Array[1..10] of String[mysMaxHelpKeyLen]; Procedure LinkOFF (LineNum: Word; YPos, LPos: Byte); Var @@ -185,7 +190,7 @@ Var With Text[LineNum] Do S := Copy(strStripPipe(Text), Link[LPos].LinkPos, Link[LPos].LinkLen); - WriteXY (X1 + Text[LineNum].Link[LPos].LinkPos, YPos, 9, S); + WriteXY (WinX1 + Text[LineNum].Link[LPos].LinkPos - 1, YPos, 9, S); End; Procedure DrawPage; @@ -193,14 +198,14 @@ Var Count1 : Byte; Count2 : Byte; Begin - For Count1 := Y1 to WinSize Do Begin - If TopPage + Count1 - Y1 <= Lines Then Begin - WriteXYPipe (X1 + 1, (Count1 - Y1) + Y1 + 1, 7, X2 - X1 - 1, Text[TopPage + (Count1 - Y1)].Text); + For Count1 := 1 to WinSize Do Begin + If TopPage + Count1 - 1 <= Lines Then Begin + WriteXYPipe (WinX1, Count1 + WinY1 - 1, 7, WinX2 - WinX1 + 1, Text[TopPage + Count1 - 1].Text); - For Count2 := 1 to Text[TopPage + Count1 - 1].Links Do - LinkOFF (TopPage + Count1 - 1, Count1 - Y1 + Y1 + 1, Count2); + For Count2 := 1 to Text[TopPage + Count1 - 1].Links Do + LinkOFF (TopPage + Count1 - 1, Count1 + WinY1 - 1, Count2); End Else - WriteXYPipe (X1 + 1, (Count1 - Y1) + Y1 + 1, 7, X2 - X1 - 1, ''); + WriteXYPipe (WinX1, Count1 + WinY1 - 1, 7, WinX2 - WinX1 + 1, ''); End; End; @@ -211,9 +216,9 @@ Var With Text[TopPage + CurLine - 1] Do S := Copy(strStripPipe(Text), Link[CurLPos].LinkPos, Link[CurLPos].LinkLen); - WriteXY (X1 + Text[TopPage + CurLine - 1].Link[CurLPos].LinkPos, Y1 + CurLine, 31, S); + WriteXY (WinX1 + Text[TopPage + CurLine - 1].Link[CurLPos].LinkPos - 1, WinY1 + CurLine - 1, 31, S); - Session.io.AnsiGotoXY (X1 + Text[TopPage + CurLine - 1].Link[CurLPos].LinkPos, Y1 + CurLine); + Session.io.AnsiGotoXY (WinX1 + Text[TopPage + CurLine - 1].Link[CurLPos].LinkPos - 1, WinY1 + CurLine - 1); End; Procedure UpdateCursor; @@ -221,10 +226,12 @@ Var If Text[TopPage + CurLine - 1].Links > 0 Then Begin If CurLPos > Text[TopPage + CurLine - 1].Links Then CurLPos := Text[TopPage + CurLine - 1].Links; If CurLPos < 1 Then CurLPos := 1; + LinkON; End Else Begin CurLPos := 1; - Session.io.AnsiGotoXY (X1 + 1, Y1 + CurLine); + + Session.io.AnsiGotoXY (WinX1, WinY1 + CurLine - 1); End; End; @@ -246,17 +253,28 @@ Var Count : Byte; Ch : Char; Begin + FN := strWordGet(1, Str, ';'); + Template := strWordGet(2, Str, ';'); + Keyword := strWordGet(3, Str, ';'); + Assign (HelpFile, FN); - Reset (HelpFile); + {$I-} Reset (HelpFile); {$I+} If IoResult <> 0 Then Exit; Close (HelpFile); + Session.io.OutFile(Template, False, 0); + + WinX1 := Session.io.ScreenInfo[1].X; + WinY1 := Session.io.ScreenInfo[1].Y; + WinX2 := Session.io.ScreenInfo[2].X; + WinY2 := Session.io.SCreenInfo[2].Y; + TopPage := 1; CurLine := 1; LastPos := 0; - WinSize := Y2 - Y1 - 1; + WinSize := WinY2 - WinY1 + 1; CurKey := Keyword; OK := ReadKeywordData; @@ -267,24 +285,12 @@ Begin If Not OK Then Exit; - Box := TAnsiMenuBox.Create; +// Session.io.PurgeInputBuffer; - Box.Shadow := False; - Box.FrameType := 1; - Box.BoxAttr := 8; - Box.BoxAttr2 := 8; - Box.HeadAttr := 15; - Box.Box3D := False; - Box.Header := ' Section : ' + CurKey + ' '; - - Box.Open (X1, Y1, X2, Y2); - - DrawPage; - UpdateCursor; +// DrawPage; +// UpdateCursor; While OK Do Begin -// Box.UpdateHeader (' Section : ' + CurKey + ' '); - TopPage := 1; CurLine := 1; @@ -308,6 +314,7 @@ Begin #71 : If (TopPage > 1) or (CurLine > 1) Then Begin TopPage := 1; CurLine := 1; + DrawPage; UpdateCursor; End; @@ -317,7 +324,7 @@ Begin DrawPage; UpdateCursor; End Else If CurLine > 1 Then Begin - LinkOFF(TopPage + CurLine - 1, CurLine + 1, CurLPos); + LinkOFF(TopPage + CurLine - 1, WinY1 + CurLine - 1, CurLPos); Dec (CurLine); UpdateCursor; End; @@ -325,22 +332,24 @@ Begin #73 : Begin If TopPage - WinSize > 0 Then Begin Dec (TopPage, WinSize); + DrawPage; UpdateCursor; End Else If CurLine > 1 Then Begin TopPage := 1; CurLine := 1; + DrawPage; UpdateCursor; End; End; #75 : If (CurLPos > 1) and (Text[TopPage + CurLine - 1].Links > 0) Then Begin - LinkOFF(TopPage + CurLine - 1, CurLine + 1, CurLPos); + LinkOFF(TopPage + CurLine - 1, WinY1 + CurLine - 1, CurLPos); Dec(CurLPos); LinkON; End; #77 : If CurLPos < Text[TopPage + CurLine - 1].Links Then Begin - LinkOFF(TopPage + CurLine - 1, CurLine + 1, CurLPos); + LinkOFF(TopPage + CurLine - 1, WinY1 + CurLine - 1, CurLPos); Inc(CurLPos); LinkON; End; @@ -348,11 +357,12 @@ Begin Repeat PageDown; Until TopPage >= Lines - WinSize - 1; + DrawPage; UpdateCursor; End Else If TopPage + CurLine <= Lines Then Begin - LinkOFF (TopPage + CurLine - 1, CurLine + 1, CurLPos); + LinkOFF (TopPage + CurLine - 1, WinY1 + CurLine - 1, CurLPos); CurLine := Lines - TopPage + 1; UpdateCursor; End; @@ -363,7 +373,7 @@ Begin UpdateCursor; End Else If (CurLine < WinSize) And (TopPage + CurLine <= Lines) Then Begin - LinkOFF(TopPage + CurLine - 1, CurLine + 1, CurLPos); + LinkOFF(TopPage + CurLine - 1, WinY1 + CurLine - 1, CurLPos); Inc(CurLine); UpdateCursor; End; @@ -374,7 +384,7 @@ Begin UpdateCursor; End Else If TopPage + CurLine <= Lines Then Begin - LinkOFF (TopPage + CurLine - 1, CurLine + 1, CurLPos); + LinkOFF (TopPage + CurLine - 1, WinY1 + CurLine - 1, CurLPos); CurLine := Lines - TopPage + 1; UpdateCursor; End; @@ -435,9 +445,6 @@ Begin End; Until False; End; - - Box.Close; - Box.Free; End; -End. \ No newline at end of file +End. diff --git a/mystic/bbs_cfg_filebase.pas b/mystic/bbs_cfg_filebase.pas index fd0ad76..1bdb8e7 100644 --- a/mystic/bbs_cfg_filebase.pas +++ b/mystic/bbs_cfg_filebase.pas @@ -31,7 +31,7 @@ Begin Box := TAnsiMenuBox.Create; Form := TAnsiMenuForm.Create; - Box.Open (6, 5, 75, 21); + Box.Open (6, 5, 75, 20); VerticalLine (22, 7, 19); VerticalLine (69, 7, 9); @@ -47,7 +47,7 @@ Begin Form.AddStr ('P', ' FTP ACS' , 13, 15, 24, 15, 9, 30, 30, @FBase.FTPACS, Topic + 'ACS to access via FTP'); Form.AddStr ('S', ' Sysop ACS ' , 11, 16, 24, 16, 11, 30, 30, @FBase.SysopACS, Topic + 'ACS for Sysop access'); Form.AddTog ('E', ' Default Scan' , 8, 17, 24, 17, 14, 6, 0, 2, 'No Yes Always', @FBase.DefScan, Topic + 'Default scan setting'); - Form.AddPath ('I', ' File Path' , 11, 19, 24, 19, 11, 30, 120, @FBase.Path, Topic + 'Directory where files are stored'); + Form.AddPath ('I', ' File Path' , 11, 18, 24, 18, 11, 30, 120, @FBase.Path, Topic + 'Directory where files are stored'); Form.AddBits ('R', ' Free Files' , 57, 7, 71, 7, 12, FBFreeFiles, @FBase.Flags, Topic + 'Files in base are free?'); Form.AddBits ('M', ' Slow Media' , 57, 8, 71, 8, 12, FBSlowMedia, @FBase.Flags, Topic + 'Files stored on slow media device?'); @@ -100,6 +100,7 @@ Var FtpName := Name; DefScan := 1; SysopACS := 's255'; + Template := 'ansiflst'; Flags := FBShowUpload; End; @@ -138,7 +139,7 @@ Begin Case List.ExitCode of '/' : Case GetCommandOption(10, 'I-Insert|D-Delete|C-Copy|P-Paste|') of - 'I' : If List.Picked > 1 Then Begin + 'I' : Begin InsertRecord; MakeList; End; diff --git a/mystic/bbs_cfg_msgbase.pas b/mystic/bbs_cfg_msgbase.pas index 60f22c3..e497c3d 100644 --- a/mystic/bbs_cfg_msgbase.pas +++ b/mystic/bbs_cfg_msgbase.pas @@ -106,7 +106,7 @@ Var MBaseFile.Read (MBase); - List.Add(strPadR(strI2S(MBaseFile.FilePos), 5, ' ') + ' ' + strStripMCI(MBase.Name), Tag); + List.Add(strPadR(strI2S(MBaseFile.FilePos - 1), 5, ' ') + ' ' + strStripMCI(MBase.Name), Tag); End; List.Add('', 2); @@ -155,7 +155,8 @@ Var If Email Then Begin FileName := 'email'; Name := 'Electronic Mail'; - Index := 0; + Index := 1; + ListACS := '%'; Flags := Flags or MBPrivate; End; End; @@ -246,6 +247,7 @@ Begin Box.Close; + MBaseFile.Close; MBaseFile.Free; List.Free; Box.Free; diff --git a/mystic/bbs_cfg_seclevel.pas b/mystic/bbs_cfg_seclevel.pas index 2f48669..7ed222f 100644 --- a/mystic/bbs_cfg_seclevel.pas +++ b/mystic/bbs_cfg_seclevel.pas @@ -111,12 +111,12 @@ Begin List.LoChars := #13#27#47; List.NoWindow := True; - Box.Open (21, 5, 59, 20); + Box.Open (21, 5, 59, 21); - WriteXY (23, 6, 112, 'Lvl Description'); - WriteXY (22, 7, 112, strRep('Ä', 37)); - WriteXY (22, 18, 112, strRep('Ä', 37)); - WriteXY (29, 19, 112, cfgCommandList); + WriteXY (23, 7, 112, 'Lvl Description'); + WriteXY (22, 8, 112, strRep('Ä', 37)); + WriteXY (22, 19, 112, strRep('Ä', 37)); + WriteXY (29, 20, 112, cfgCommandList); Repeat MakeList; @@ -126,7 +126,7 @@ Begin MakeList; End; - List.Open (21, 7, 59, 18); + List.Open (21, 8, 59, 19); List.Close; Case List.ExitCode of diff --git a/mystic/bbs_cfg_vote.pas b/mystic/bbs_cfg_vote.pas index c2cafdc..87744c8 100644 --- a/mystic/bbs_cfg_vote.pas +++ b/mystic/bbs_cfg_vote.pas @@ -24,6 +24,7 @@ Begin Session.SystemLog ('*VOTE EDITOR*'); Repeat Session.io.OutFullLn ('|CL|14Voting Booth Editor|CR|CR|15## Question|CR|09-- ---------------------------------------'); + Reset (VoteFile); While Not Eof(VoteFile) do begin Read (VoteFile, Vote); @@ -141,4 +142,4 @@ Begin close (VoteFile); End; -End. +End. \ No newline at end of file diff --git a/mystic/bbs_core.pas b/mystic/bbs_core.pas index 5413728..4b4f196 100644 --- a/mystic/bbs_core.pas +++ b/mystic/bbs_core.pas @@ -241,7 +241,7 @@ Begin If IoResult <> 0 Then ReWrite (tLOG); If Str = '-' Then - WriteLn (tLOG, strRep('-', 50)) + WriteLn (tLOG, strRep('-', 40)) Else WriteLn (tLOG, DateDos2Str(CurDateDos, 1) + ' ' + TimeDos2Str(CurDateDos, False) + ' ' + Str); diff --git a/mystic/bbs_menus.pas b/mystic/bbs_menus.pas index 59c3d2b..a67f4d6 100644 --- a/mystic/bbs_menus.pas +++ b/mystic/bbs_menus.pas @@ -347,7 +347,11 @@ Begin {$I-} Reset (MenuFile); {$I+} If IoResult <> 0 Then Begin - If Not Global Then Session.io.OutFullLn ('|CR|14Menu not found, loading fallback.'); + If Not Global Then Begin + Session.io.OutFullLn ('|CR|14Menu not found, loading fallback.'); + Session.SystemLog ('Menu: ' + MenuName + ' not found'); + End; + Exit; End; diff --git a/mystic/bbs_msgbase.pas b/mystic/bbs_msgbase.pas index e116d5c..a4aec11 100644 --- a/mystic/bbs_msgbase.pas +++ b/mystic/bbs_msgbase.pas @@ -291,7 +291,7 @@ End; Procedure TMsgBase.ChangeArea (Data: String); Var - A, + Count : LongInt; Total : Word; Old : RecMessageBase; Str : String[5]; @@ -300,19 +300,24 @@ Begin Compress := Config.MCompress; Old := MBase; + {$IFDEF LOGGING} + Session.SystemLog('MsgAreaChange: ' + Data); + Session.SystemLog(' CurArea: ' + strI2S(Session.User.ThisUser.LastMBase)); + {$ENDIF} + If (Data = '+') or (Data = '-') Then Begin Reset (MBaseFile); - A := Session.User.ThisUser.LastMBase - 1; + Count := Session.User.ThisUser.LastMBase - 1; Repeat Case Data[1] of - '+' : Inc(A); - '-' : Dec(A); + '+' : Inc(Count); + '-' : Dec(Count); End; {$I-} - Seek (MBaseFile, A); + Seek (MBaseFile, Count); Read (MBaseFile, MBase); {$I+} @@ -332,15 +337,19 @@ Begin Exit; End; - A := strS2I(Data); + Count := strS2I(Data); - If A > 0 Then Begin - Inc (A); + {$IFDEF LOGGING} + Session.SystemLog('Numeric change converstion: ' + strI2S(Count)); + {$ENDIF} + + If Count > 0 Then Begin + Inc (Count); Reset (MBaseFile); - If A <= FileSize(MBaseFile) Then Begin - Seek (MBaseFile, A-1); + If Count <= FileSize(MBaseFile) Then Begin + Seek (MBaseFile, Count - 1); Read (MBaseFile, MBase); If Session.User.Access(MBase.ListACS) Then Begin @@ -377,12 +386,12 @@ Begin Break; Until False; - A := strS2I(Str); + Count := strS2I(Str); - If (A > 0) and (A <= Total) Then Begin + If (Count > 0) and (Count <= Total) Then Begin Reset (MBaseFile); If Not Compress Then Begin - Seek (MBaseFile, A - 1); + Seek (MBaseFile, Count - 1); Read (MBaseFile, MBase); If Not Session.User.Access(MBase.ListACS) Then Begin @@ -393,12 +402,12 @@ Begin End Else Begin Total := 0; - While Not Eof(MBaseFile) And (A <> Total) Do Begin + While Not Eof(MBaseFile) And (Count <> Total) Do Begin Read (MBaseFile, MBase); If Session.User.Access(MBase.ListACS) Then Inc(Total); End; - If A <> Total Then Begin + If Count <> Total Then Begin Close (MBaseFile); MBase := OLD; Exit; diff --git a/mystic/bbs_msgbase_abs.pas b/mystic/bbs_msgbase_abs.pas index 3083cba..1bea95c 100644 --- a/mystic/bbs_msgbase_abs.pas +++ b/mystic/bbs_msgbase_abs.pas @@ -239,7 +239,7 @@ End; Procedure TMsgBaseABS.DoString (Str: String); Var - Count : SmallWord; + Count : Word; Begin For Count := 1 to Length(Str) Do DoChar(Str[Count]); diff --git a/mystic/bbs_user.pas b/mystic/bbs_user.pas index 098eb56..21dad48 100644 --- a/mystic/bbs_user.pas +++ b/mystic/bbs_user.pas @@ -76,6 +76,8 @@ Uses Constructor TBBSUser.Create (Var Owner: Pointer); Begin + FillChar(ThisUser, SizeOf(ThisUser), #0); + UserNum := -1; ThisUser.ScreenSize := Config.DefScreenSize; ThisUser.DateType := 1; @@ -86,6 +88,10 @@ Begin ThisUser.EditType := 1; ThisUser.Birthday := CurDateJulian; ThisUser.Gender := 'U'; + ThisUser.FirstOn := CurDateDos; + ThisUser.Archive := Config.qwkArchive; + ThisUser.LastFGroup := Config.StartFGroup; + ThisUser.LastMGroup := Config.StartMGroup; IgnoreGroup := False; InChat := False; @@ -914,13 +920,13 @@ Begin Upgrade_User_Level (True, ThisUser, Config.NewUserSec); - ThisUser.FirstOn := CurDateDos; - ThisUser.Archive := Config.qwkArchive; - ThisUser.LastFBase := 0; - ThisUser.LastFGroup := Config.StartFGroup; - ThisUser.LastMGroup := Config.StartMGroup; - ThisUser.LastMBase := 0; - ThisUser.Flags := 0; +// ThisUser.FirstOn := CurDateDos; +// ThisUser.Archive := Config.qwkArchive; +// ThisUser.LastFBase := 0; +// ThisUser.LastFGroup := Config.StartFGroup; +// ThisUser.LastMGroup := Config.StartMGroup; +// ThisUser.LastMBase := 0; +// ThisUser.Flags := 0; If Not Config.AskRealName Then ThisUser.RealName := ThisUser.Handle; If Not Config.AskAlias Then ThisUser.Handle := ThisUser.RealName; @@ -1156,6 +1162,7 @@ Begin Session.io.Graphics := 0; + Session.systemLog ('-'); Session.SystemLog ('Connect from ' + Session.UserIPInfo + ' (' + Session.UserHostInfo + ')'); If Config.SystemPW <> '' Then diff --git a/mystic/mystic.pas b/mystic/mystic.pas index 8d62781..f386512 100644 --- a/mystic/mystic.pas +++ b/mystic/mystic.pas @@ -136,9 +136,7 @@ Procedure CheckDIR (Dir: String); Begin If Not FileDirExists(Dir) Then Begin Screen.WriteLine ('ERROR: ' + Dir + ' does not exist.'); - DisposeClasses; - Halt(1); End; End; @@ -232,7 +230,6 @@ Begin Assign (Session.User.UserFile, Config.DataPath + 'users.dat'); {$I-} Reset (Session.User.UserFile); {$I+} - If IoResult <> 0 Then Begin If FileExist(Config.DataPath + 'users.dat') Then Begin Screen.WriteLine ('ERROR: Unable to access USERS.DAT'); @@ -242,9 +239,13 @@ Begin ReWrite(Session.User.UserFile); End; - Close (Session.User.UserFile); + Assign (VoteFile, Config.DataPath + 'votes.dat'); + {$I-} Reset (VoteFile); {$I+} + If IoResult <> 0 Then ReWrite (VoteFile); + Close (VoteFile); + If Session.ConfigMode Then Exit; CheckDIR (Config.SystemPath); @@ -310,11 +311,6 @@ Begin If IoResult <> 0 Then ReWrite(Session.FileBase.ArcFile); Close (Session.FileBase.ArcFile); - Assign (VoteFile, Config.DataPath + 'votes.dat'); - {$I-} Reset (VoteFile); {$I+} - If IoResult <> 0 Then ReWrite (VoteFile); - Close (VoteFile); - Assign (Session.FileBase.ProtocolFile, Config.DataPath + 'protocol.dat'); {$I-} Reset (Session.FileBase.ProtocolFile); {$I+} If IoResult <> 0 Then ReWrite (Session.FileBase.ProtocolFile); @@ -414,7 +410,7 @@ Begin Session.FindNextEvent; - Session.SystemLog ('Node ' + strI2S(Session.NodeNum) + ' online'); +// Session.SystemLog ('Node ' + strI2S(Session.NodeNum) + ' online'); If Session.TimeOffset > 0 Then Session.SetTimeLeft(Session.TimeOffset) diff --git a/mystic/records.pas b/mystic/records.pas index 2d8e013..4da6486 100644 --- a/mystic/records.pas +++ b/mystic/records.pas @@ -9,6 +9,8 @@ =========================================================================== } +{$PACKRECORDS 1} + Const mysSoftwareID = 'Mystic'; mysCopyYear = '1997-2012'; @@ -251,19 +253,6 @@ Const UserNoCaller = $00000010; UserNoPWChange = $00000020; -//FUTURE DATA FILE UPDATES NEEDED -//LASTON needs optional1-10 compare to Mystic2 -//MENUS -// remove fallback? -// (flags) -// menu descriptions -// node action -// command timer -// input chars -// (commands) -// TBD compare to mystic 2 -// VOTING: expand ACS to s[30] - Type RecUser = Record { USERS.DAT } PermIdx : LongInt; // permanent user number @@ -431,7 +420,7 @@ Type ITemplate : String[20]; Index : Word; Flags : LongInt; - Res : Array[1..74] of Byte; + Res : Array[1..80] of Byte; End; FScanRec = Record { *.SCN }