Well, yer, just something that makes an AutoTalker of your choice
Simple and effective, and a pretty good learning tool 
scar Code:
function Str2ToBool(Str: String): Boolean;
var
S: String;
begin
S := Lowercase(Str);
Result := (StrToIntDef(S, 0) <> 0);
if(Result) then
Exit;
case (S) of
'false', '0', 'no', 'nope', 'never', 'nup', 'n': Result := False;
'true', 'yes', 'yep', 'yer', 'yeah', 'yup', 'y', 'ye': Result := True;
else
Result := False;
end;
end;
var
Settings: array[0..3] of Boolean;
ScrNam, UsrNam: String;
MaxSen, tSpeed, wTime, i: Integer;
begin
ScrNam := Readln('What do you want your script to be called?');
UsrNam := Readln('What is your name?');
Settings[0] := Str2ToBool(Readln('Use function keys?'));
MaxSen := StrToIntDef(Readln('How many sentences to type?'), -123456789);
if(not(Settings[0])) then
wTime := StrToIntDef(Readln('Wait period between sentence typing?'), 0);
tSpeed := StrToIntDef(Readln('Typing speed? (0 = Lowest; 5 = Highest)'), 2);
Settings[1] := Str2ToBool(Readln('Clear the debug box when printing script?'));
Settings[2] := Str2ToBool(Readln('Continue with script print?'));
if(not(Settings[2])) then
TerminateScript;
if(InRange(tSpeed, 0, 2)) then
tSpeed := 75 - (tSpeed * 10) else
if(InRange(tSpeed, 3, 4)) then
tSpeed := 50 - (tSpeed * 10) else
tSpeed := 4;
{ if(InRange(tSpeed, 0, 5)) then
tSpeed := Floor((250 / ((tSpeed + 1) * 4)) / 2); }
if(Settings[0]) then
if(MaxSen > 10) then
begin
Writeln('ERROR: Max sentences can be no longer than 10 when using F-Keys.');
Writeln(' -- You put (for max sentences) ' + IntToStr(MaxSen) + '.');
TerminateScript;
end else
if(MaxSen = -123456789) then
begin
Writeln('ERROR: You have not specified a value for the Max sentences.');
TerminateScript;
end;
if(Settings[1]) then
ClearDebug;
Writeln('{ == End Script by pressing specified HotKey or by the F12 key == }');
Writeln(TrimEx(' ', 'program ' + TrimOthers(ScrNam) + ';'));
Writeln(' // -- Script created with Auto-Talker-Builder by Mayazcherquoi (a.k.a Dan'#39's The Man).');
Writeln('');
Writeln('const');
for i := 1 to MaxSen do
Writeln(' Sentence' + IntToStr(i) + ' = '#39'Text to type here...'#39';');
Writeln(' ShiftKeys = '#39'~!@#$%^&*()_+{}|:"<>?ABCDEFGHIJKLMNOPQRSTUVWXYZ'#39'; // DON'#39'T TOUCH!!!');
Writeln('');
Writeln('procedure TypeString(Sentence: String);');
Writeln('var');
Writeln(' i, bI, KeyCode: Integer;');
Writeln(' Shift: Boolean;');
Writeln('begin')
Writeln(' bI := Length(Sentence);');
Writeln(' for i := 1 to bI do');
Writeln(' begin');
Writeln(' KeyCode := GetKeyCode(Sentence[i]);');
Writeln(' if(Pos(Sentence[i], ShiftKeys) <> 0) then');
Writeln(' begin');
Writeln(' Shift := True;');
Writeln(' KeyDown(VK_Shift);');
Writeln(' Wait(' + IntToStr(tSpeed shr 1) + ' + Random(' +
IntToStr(tSpeed shr 2) + '));');
Writeln(' end;');
Writeln(' KeyDown(KeyCode);');
Writeln(' Wait(' + IntToStr(tSpeed) + ' + Random(' +
IntToStr(tSpeed shr 1) + '));');
Writeln(' KeyUp(KeyCode);');
Writeln(' Wait(' + IntToStr(tSpeed shr 1) + ' + Random(' +
IntToStr(tSpeed shr 2) + '));');
Writeln(' if(Shift) then');
Writeln(' begin');
Writeln(' Shift := False;');
Writeln(' KeyUp(VK_Shift);');
Writeln(' Wait(' + IntToStr(tSpeed shr 2) + ' + Random(' +
IntToStr(tSpeed shr 4) + '));');
Writeln(' end;');
Writeln(' end;');
Writeln('end;');
Writeln('');
Writeln('var');
Writeln(' i, bI: Cardinal;');
Writeln('');
Writeln('begin');
Writeln(' repeat');
if(Settings[0]) then
begin
for i := 2 to MaxSen + 1 do
begin
Writeln(' if(IsFKeyDown(' + IntToStr(I) + ')) then');
Writeln(' TypeString(Sentence' + IntToStr(I - 1) + ' + #13);');
end;
end else
for i := 1 to MaxSen do
begin
Writeln(' TypeString(Sentence' + IntToStr(I) + ');');
Writeln(' Sleep(' + IntToStr(wTime) + ' + Random(' +
IntToStr(Trunc(wTime / 3)) + ' + #13);');
end;
Writeln(' Until(IsFKeyDown(12));');
Writeln('end.');
end.