Напечатать слова задом наперед и сохранить результат в буфер обмена Windows - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте всем! Не могу скомпилировать программу! Ошибки! Программа должна переворачивать слова задом наперед ( Миша круто поет- теоп отурк ашиМ)+ результат должен сохряниться в буфере обмена Windows, чтоб можно было результат. например, вставить в блокнот или еще куда-нибудь... Есть вот две программы по-отдельности: 1 программа переворачивает слова наоборот, 2 программа копирует слово в буфер. А вот объединить не получается(( Помогите! 2 дня пытаюсь... 1 программа:
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.
2 программа: нашел код в интернете.
{$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.

Объяснение кода листинга программы

  1. Открывается буфер обмена Windows.
  2. Задается длина строки, включая символ новой строки.
  3. Выделяется память под строку в буфере обмена.
  4. Получается указатель на выделенную память.
  5. Копируются символы строки в выделенную память.
  6. Очищается буфер обмена.
  7. Устанавливается данные в буфере обмена.
  8. Закрывается буфер обмена.
  9. Копируется строка в буфер обмена, предварительно перевернув её.
  10. Выводится на экран строка, введенная пользователем.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы