home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / MFM_119C.ZIP / RENFIND.PAS < prev    next >
Pascal/Delphi Source File  |  1993-06-03  |  4KB  |  118 lines

  1. Unit RenFind;
  2. {========================================================================}
  3. Interface
  4.   Function ValidFileName(FileName : String) : Boolean;
  5.   Procedure RenameFile;
  6.   Procedure FindString(TypeOfSearch : Char);
  7. {========================================================================}
  8. Implementation
  9.   Uses
  10.     Display, Dos, Edit, MfmDefs, MfmStr, Screen;
  11. {========================================================================}
  12. Function ValidFileName(FileName : String) : Boolean;
  13.   Begin
  14.     If (Pos('.',FileName) <= 9)
  15.     And (Rpos('.',FileName) <= 4)
  16.     And (Length(FileName) > 0)
  17.     And (Copy(FileName,1,1) <> '.') Then
  18.     Begin
  19.       ValidFileName := True;
  20.     End
  21.     Else
  22.     Begin
  23.       ValidFileName := False;
  24.     End;
  25.   End;
  26. {========================================================================}
  27. Procedure RenameFile;
  28.   Var
  29.     NewFileName : String[12];
  30.     FileToRename : File;
  31.     Rfc : Char;
  32.   Begin
  33.     If CurrentEntry^.TypeOfRecord = FileRecord Then
  34.     Begin
  35.       AnsiGotoXY(25,1); AnsiClearToEOL;
  36.       Write('Enter file name to rename '+CurrentEntry^.FileName+' to: ');
  37.       OffSet := 31 + Length(CurrentEntry^.FileName);
  38.       NewFileName := UpperString(EditLine('',12,25,Offset));
  39.       If ValidFileName(NewFileName) Then
  40.       Begin
  41.         FindFirst(FileAreaPath+NewFileName,AnyFile,DirInfo);
  42.         If DosError <> 0 Then
  43.         Begin
  44.           AnsiGotoXY(25,1); AnsiClearToEOL;
  45.           Write('Rename '+CurrentEntry^.FileName+' to '+NewFileName+' (Y/N)? ');
  46.           Repeat
  47.             Gbx := GetInput;
  48.             Rfc := Upcase(Chr(Gbx));
  49.           Until Rfc In ['N','Y'];
  50.           Write(Rfc);
  51.           If Rfc = 'Y' Then
  52.           Begin
  53.             Altered := True;
  54.             Assign(FileToRename,FileAreaPath+CurrentEntry^.FileName);
  55.             Rename(FileToRename,FileAreaPath+NewFileName);
  56.             CurrentEntry^.FileName := NewFileName;
  57.             NextPrintEntry := CurrentEntry;
  58.             DisplayRecord(Row); DisplayCurrentLocation;
  59.           End;
  60.         End;
  61.       End;
  62.       AnsiGotoXY(24,80);
  63.     End;
  64.   End;
  65. {========================================================================}
  66. Procedure FindString(TypeOfSearch : Char);
  67.   Var
  68.     Found : Boolean;
  69.     Counter : Byte;
  70.   Begin
  71.     AnsiGotoXY(25,1); AnsiClearToEOL;
  72.     Write('Enter string to search for: '+StringToFind);
  73.     StringToFind := UpperString(EditLine(StringToFind,12,25,28));
  74.     NextPrintEntry := CurrentEntry; Found := False;
  75.     While (Not Found) And (NextPrintEntry^.NextEntry <> NIL) Do
  76.     Begin
  77.       NextPrintEntry := NextPrintEntry^.NextEntry;
  78.       If Pos(StringToFind,UpperString(NextPrintEntry^.FileName)) > 0 Then Found := True;
  79.       Case TypeOfSearch Of
  80.         'B' : Begin
  81.                 If Pos(StringToFind,UpperString(NextPrintEntry^.FileName)) > 0 Then Found := True;
  82.                 If Pos(StringToFind,UpperString(NextPrintEntry^.Description)) > 0 Then Found := True;
  83.               End;
  84.         'D' : Begin
  85.                 If Pos(StringToFind,UpperString(NextPrintEntry^.Description)) > 0 Then Found := True;
  86.               End;
  87.         'F' : Begin
  88.                 If Pos(StringToFind,UpperString(NextPrintEntry^.FileName)) > 0 Then Found := True;
  89.               End;
  90.       End;
  91.     End;
  92.     If Found Then
  93.     Begin
  94.       Counter := 10;
  95.       CurrentEntry := NextPrintEntry;
  96.       While (Counter > 1) And (NextPrintEntry^.PrevEntry <> NIL) Do
  97.       Begin
  98.         Dec(Counter);
  99.         NextPrintEntry := NextPrintEntry^.PrevEntry;
  100.       End;
  101.       TopEntry := NextPrintEntry;
  102.       AnsiGotoXY(25,1); AnsiClearToEOL;
  103.       Write(StringToFind+' found!');
  104.       Row := 11 - Counter;
  105.       DisplayScreen;
  106.     End
  107.     Else
  108.     Begin
  109.       AnsiGotoXY(25,1); AnsiClearToEOL;
  110.       Write(StringToFind+' NOT found!');
  111.       DisplayCurrentLocation;
  112.     End;
  113.   End;
  114. {========================================================================}
  115. Begin
  116. End.
  117. {========================================================================}
  118.