[Back to MISC SWAG index] [Back to Main SWAG index] [Original]
Program ChgPic;
Uses Dos, Strings;
Const
FindPath : String = 'C:\windows\*.bmp';
WallPaper : String = 'WALLPAPER';
Type
PicPtr = ^NameRec;
LinePtr = ^LineRec;
NameRec = Record
PicName : String[12];
Next : PicPtr;
End;
LineRec = Record
ALine : String[80];
NextLine : LinePtr;
End;
Var
DirInfo : SearchRec;
First, hldptr : PicPtr;
Current : PicPtr;
FirstLine, CurrentLine,
TmpLine, LastLIne : LinePtr;
Count, Ix,
Nbr : Integer;
FileIn, FileOt : Text;
WorkLine : String[80];
CkWallPaper : String[9];
HoldName : String[12];
TestMode : boolean;
Begin
If ParamCount > 0 Then
Begin
TestMode := True;
End;
First := Nil;
Count := 0;
FindFirst(FindPath, AnyFile, DirInfo);
While DosError = 0 Do
Begin
New (Current);
if First = Nil Then
Begin
First := Current;
Current^.Next := Nil;
End
Else
Begin
Current^.Next := First;
First := Current;
End;
Current^.PicName := DirInfo.Name;
Inc(Count);
FindNext(DirInfo);
End;
Randomize;
Nbr := Random(Count) + 1;
Current := First;
HoldName := Current^.PicName;
For Ix := 1 to Nbr Do
Begin
hldptr := Current;
Current := Current^.Next;
HoldName := Current^.PicName;
Dispose (hldptr);
End;
If TestMode Then
Writeln (HoldName);
While Current <> Nil Do
Begin
HldPtr := Current;
Current := Current^.Next;
Dispose (hldptr);
End;
FirstLine := Nil;
Assign (FileIn, 'c:\windows\win.ini');
Reset (FileIn);
While NOT EOF(FileIn) Do
Begin
Readln(Filein, WorkLine);
CkWallPaper := Copy (WorkLine, 1, 9);
For Ix := 1 to Length(CkWallPaper) Do
CkWallPaper[Ix] := UpCase(CkWallPaper[Ix]);
New (CurrentLine);
if (CkWallPaper = WallPaper) Then
Begin
CurrentLine^.ALine := 'WallPaper=' + HoldName;
if TestMode Then
Writeln(CurrentLine^.ALine);
End
Else
CurrentLIne^.ALine := WorkLine;
CurrentLIne^.NextLine := Nil;
If FirstLine = NIL Then
FirstLine := CurrentLIne
Else
LastLIne^.NextLIne := CurrentLine;
LastLine := CurrentLine;
End;
Close (FileIn);
Rewrite(FileIn);
CurrentLine := FirstLine;
While CurrentLine <> NIL Do
Begin
Writeln(FileIn, CurrentLine^.ALine);
CurrentLIne := CurrentLIne^.NextLine;
End;
Close(FileIn);
If TestMode Then
Readln;
End.
[Back to MISC SWAG index] [Back to Main SWAG index] [Original]