Напечатать слова задом наперед и сохранить результат в буфер обмена Windows - Free Pascal
Формулировка задачи:
Здравствуйте всем! Не могу скомпилировать программу! Ошибки! Программа должна переворачивать слова задом наперед ( Миша круто поет- теоп отурк ашиМ)+ результат должен сохряниться в буфере обмена Windows, чтоб можно было результат. например, вставить в блокнот или еще куда-нибудь... Есть вот две программы по-отдельности: 1 программа переворачивает слова наоборот, 2 программа копирует слово в буфер. А вот объединить не получается(( Помогите! 2 дня пытаюсь...
1 программа:
2 программа: нашел код в интернете.
uses crt;
var l:integer;
t:string;
begin
clrscr;
writeln('vvedite stroky');
readln(t);
for l:=length(t) downto 1 do
write(t[l]);
readkey
end.{$mode delphi}
uses windows, sysutils;
procedure ToBuffer(s: string);
var
len: integer;
Data: THandle;
DataPtr: Pointer;
begin
if OpenClipboard(0) then
try
len := Length(s) + 1;
Data := GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE, len);
try
DataPtr := GlobalLock(Data);
try
Move(pchar(s)^, DataPtr^, len);
EmptyClipboard;
SetClipboardData(CF_TEXT, Data);
finally
GlobalUnlock(Data);
end;
except
GlobalFree(Data);
end;
finally
CloseClipboard;
end;
end;
begin
ToBuffer('another hello from fpc !!!');
end.Решение задачи: «Напечатать слова задом наперед и сохранить результат в буфер обмена Windows»
textual
Листинг программы
{$mode delphi}
uses windows, sysutils, strutils;
procedure ToBuffer(s: string);
var
len: integer;
Data: THandle;
DataPtr: Pointer;
begin
if OpenClipboard(0) then
try
len := Length(s) + 1;
Data := GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE, len);
try
DataPtr := GlobalLock(Data);
try
Move(pchar(s)^, DataPtr^, len);
EmptyClipboard;
SetClipboardData(CF_TEXT, Data);
finally
GlobalUnlock(Data);
end;
except
GlobalFree(Data);
end;
finally
CloseClipboard;
end;
end;
var
s : string;
begin
write('s = '); readln(s);
ToBuffer(ReverseString(s));
end.
Объяснение кода листинга программы
- Открывается буфер обмена Windows.
- Задается длина строки, включая символ новой строки.
- Выделяется память под строку в буфере обмена.
- Получается указатель на выделенную память.
- Копируются символы строки в выделенную память.
- Очищается буфер обмена.
- Устанавливается данные в буфере обмена.
- Закрывается буфер обмена.
- Копируется строка в буфер обмена, предварительно перевернув её.
- Выводится на экран строка, введенная пользователем.