![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Копирование [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]А почему вы не хотите сказать код этих прямоугольничков? И почему вы думаете, что вместо них должен быть переход на новую строку?