Напечатать слова задом наперед и сохранить результат в буфер обмена 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.
- Задается длина строки, включая символ новой строки.
- Выделяется память под строку в буфере обмена.
- Получается указатель на выделенную память.
- Копируются символы строки в выделенную память.
- Очищается буфер обмена.
- Устанавливается данные в буфере обмена.
- Закрывается буфер обмена.
- Копируется строка в буфер обмена, предварительно перевернув её.
- Выводится на экран строка, введенная пользователем.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д