Program SpinKey; Uses Crt; (* ^^^^ This is only For "beautifying" the stuff. XCrt has the Procedures: HideCursor ShowCursor but they are not Really important, perhaps you have youre own *) Const SpinChar : Array [1..4] of Char = ('³','/','Ä','\'); Function ReadKeySpin(Wait : Byte) : Char; Var X,Y : Byte; Num : Byte; Ch : Char; begin Num := 1; (* initialize SpinChars *) X := WhereX; (* Where am I ?? *) Y := WhereY; Repeat Write(SpinChar[Num]); (* Spin the Cursor *) GotoXY(X, Y); (* Go back *) Delay(Wait); (* Wait, it's to fast! *) Write(#32); (* Clean Screen *) GotoXY(X, Y); (* Go back *) Inc(Num); (* Next SpinChar, please *) if Num = 5 then Num := 1; (* I have only 5 Chars *) Until KeyPressed; Ch := ReadKey; (* Get the pressed Key *) Write(Ch); (* and Write it to screen*) ReadKeySpin := Ch; (* give a result *) end; Function ReadStringSpin : String; Var Help : String; Ch : Char; i : Byte; begin Help := ''; Repeat Ch := ReadKeySpin(40); if Ch <> #13 then Help := Help + Ch; Until Ch = #13; ReadStringSpin := Help; WriteLn; end; Var TestString : String; begin TestString := ReadStringSpin; end.