Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Копирование [D7, XP]


AndrewG ©   (2008-04-05 22:13:00) 

Копирую текст из MS word 2003
но потом при вставке из буфера в обычный текстовый файл, в тексте вместо перехода на новую строку отображаются прямоугольнички
Подскажите, пожалуйста
Вот как копирую:

procedure Tmain.CopyToClipboard(const aText: string);
var
wText: WideString;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then begin
  wText := aText;
  SetBuffer(CF_UNICODETEXT, wText[1], (Length(wText) + 1) * 2)
end else
  Clipboard.AsText := aText
end;
procedure Tmain.SetBuffer(Format: Word; var Buffer; Size: Integer);

var
Data: THandle;
DataPtr: Pointer;
begin
OpenClipboard(0);
try
  Data := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE, Size);
  try
    DataPtr := GlobalLock(Data);
    try
      Move(Buffer, DataPtr^, Size);
      SetClipboardData(Format, Data);
    finally
      GlobalUnlock(Data);
    end;
  except
    GlobalFree(Data);
    raise;
  end;
finally
  CloseClipboard;
end;

end;

С П А С И Б О


AndrewG   (2008-04-06 20:45:00) [1]

Проблема решена. Разобрался
Всем спасибо.=)


palva   (2008-04-06 00:23:00) [2]

> Так как в Ворде переход на новую строку есть, а после копирования получаются прямоугольнички...

Переход на новую строку в Word не означает, что в буфере тоже должен быть переход на новую строку. Должны переноситься только символы конца параграфа, а весь параграф выглядеть единой строкой. Ну это вообще говоря. Может быть вы добиваетесь чего-то другого. Вашего кода я вообще не понял, что и зачем. И где там присутствует взаимодействие с Word. И зачем там GlobalAlloc. Скорее всего я чего-то не понимаю.


AndrewG   (2008-04-05 23:58:00) [3]


> palva ©   (05.04.08 23:47) [6]
> Коды называются так:#13 возврат каретки#10 перевод строки

Спасибо, что расказал, что как называется,
но а как исправить??? может после копирования не хватает #13 или #10
Тогда как их восстановить???
С П А С И Б О


palva   (2008-04-05 23:47:00) [4]

Коды называются так:
#13 возврат каретки
#10 перевод строки


VirEx   (2008-04-05 23:26:00) [5]

#10 начало новой строки
#13 конец строки

в windows должно быть что-то вроде такого (ежели память не изменяет):
str:='line1'#13#10;
str:=str+'line2'
или наоборот)


Оригинал   (2008-04-05 22:40:00) [6]


> код "квадратикрв" 0A


А должо быть 0d0a


AndrewG   (2008-04-05 22:35:00) [7]


> И почему вы думаете, что вместо них должен быть переход
> на новую строку?

Так как в Ворде переход на новую строку есть, а после копирования получаются прямоугольнички...
или если написать так
Memo1.lines.add(Clipboard.astext),то тоже появляются вертикальные палки...

код "квадратикрв" 0A


Оригинал   (2008-04-05 22:26:00) [8]

1. Из буфера в файл каким образом вставляется?
2. Шестнадцатеричный код "квадратиков" какой?


palva   (2008-04-05 22:25:00) [9]

А почему вы не хотите сказать код этих прямоугольничков? И почему вы думаете, что вместо них должен быть переход на новую строку?


Наверх

Титульная страница Поиск, карта сайта Написать письмо