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

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

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

Здравствуйте всем! Не могу скомпилировать программу! Ошибки! Программа должна переворачивать слова задом наперед ( Миша круто поет- теоп отурк ашиМ)+ результат должен сохряниться в буфере обмена Windows, чтоб можно было результат. например, вставить в блокнот или еще куда-нибудь... Есть вот две программы по-отдельности: 1 программа переворачивает слова наоборот, 2 программа копирует слово в буфер. А вот объединить не получается(( Помогите! 2 дня пытаюсь... 1 программа:
Листинг программы
  1. uses crt;
  2. var l:integer;
  3. t:string;
  4. begin
  5. clrscr;
  6. writeln('vvedite stroky');
  7. readln(t);
  8. for l:=length(t) downto 1 do
  9. write(t[l]);
  10. readkey
  11. end.
2 программа: нашел код в интернете.
Листинг программы
  1. {$mode delphi}
  2. uses windows, sysutils;
  3. procedure ToBuffer(s: string);
  4. var
  5. len: integer;
  6. Data: THandle;
  7. DataPtr: Pointer;
  8. begin
  9. if OpenClipboard(0) then
  10. try
  11. len := Length(s) + 1;
  12. Data := GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE, len);
  13. try
  14. DataPtr := GlobalLock(Data);
  15. try
  16. Move(pchar(s)^, DataPtr^, len);
  17. EmptyClipboard;
  18. SetClipboardData(CF_TEXT, Data);
  19. finally
  20. GlobalUnlock(Data);
  21. end;
  22. except
  23. GlobalFree(Data);
  24. end;
  25. finally
  26. CloseClipboard;
  27. end;
  28. end;
  29. begin
  30. ToBuffer('another hello from fpc !!!');
  31. end.

Решение задачи: «Напечатать слова задом наперед и сохранить результат в буфер обмена Windows»

textual
Листинг программы
  1. {$mode delphi}
  2. uses windows, sysutils, strutils;
  3.  
  4. procedure ToBuffer(s: string);
  5. var
  6.   len: integer;
  7.   Data: THandle;
  8.   DataPtr: Pointer;
  9. begin
  10.   if OpenClipboard(0) then
  11.     try
  12.       len := Length(s) + 1;
  13.       Data := GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE, len);
  14.       try
  15.  
  16.         DataPtr := GlobalLock(Data);
  17.         try
  18.           Move(pchar(s)^, DataPtr^, len);
  19.           EmptyClipboard;
  20.           SetClipboardData(CF_TEXT, Data);
  21.         finally
  22.           GlobalUnlock(Data);
  23.         end;
  24.  
  25.       except
  26.         GlobalFree(Data);
  27.       end;
  28.  
  29.     finally
  30.       CloseClipboard;
  31.     end;
  32. end;
  33.  
  34. var
  35.   s : string;
  36. begin
  37.   write('s = '); readln(s);
  38.   ToBuffer(ReverseString(s));
  39. end.

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

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

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


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

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

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы