Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.05;
Скачать: CL | DM;

Вниз

Ошибка при обращении со строками   Найти похожие ветки 

 
capkoh ©   (2006-01-04 20:11) [0]

Написал код вставки текста из буфера обмена. В этом коде на последней строке происходит ошибка. Это связано с тем что что-то не в порядке с обрашением с памятью и\или обращением со строками.

Если использовать код для малых кусков текста, то все в порядке. Однако, при больших текстах что-то в WideCharToMultiByte ломается. Никак не пойму что. У кого-нибудь есть идеи как проконтролировать длину строки? И какая она максимальная? На сколько я знаю - 4ГБ...

procedure TSomeEdit.GetBuffer(Format: word; var Buffer : PWideString);
var
 temp : WideString;
 Data: THandle;
begin
 OpenClipboard(Handle);
 Data := GetClipboardData(Format);
 try
   if Data <> 0 then
     begin
       temp := PWideChar(GlobalLock(Data));
       Buffer := PWideString(temp);
     end
   else
     Buffer := 0;
 finally
   if Data <> 0 then GlobalUnlock(Data);
   CloseClipboard;
 end;
end;

Вызов:

ws : TWideString;

GetBuffer(CF_UNICODETEXT, PWideString(ws));
n := WideCharToMultiByte(CodePage, 0, PWideChar(ws), -1, 0, 0, 0, 0);


 
Гаврила ©   (2006-01-05 00:31) [1]


>temp := PWideChar(GlobalLock(Data));
>        Buffer := PWideString(temp);


temp - локальная переменная, которая будет автоматически освобождена компилятором при выходе из
процедуры GetBuffer().
соответственно, в переменной
var Buffer : PWideString
ты запоминаешь ссылку на ужзе освобожденный участок памяти


 
capkoh ©   (2006-01-05 16:30) [2]

Спасибо, починил!



Страницы: 1 вся ветка

Текущий архив: 2006.02.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
15-1137422765
Интересно мне
2006-01-16 17:46
2006.02.05
Планирование закупок сырья на производство!


2-1137554228
Ezprcist
2006-01-18 06:17
2006.02.05
Gif


1-1135859646
Mikhail
2005-12-29 15:34
2006.02.05
причина ошибки ? для Delphi 2005 под VCL Forms App for Net


2-1137844569
FunkyByte
2006-01-21 14:56
2006.02.05
Перекрытие конструктора с расширенным набором параметров


1-1136415242
woo
2006-01-05 01:54
2006.02.05
Сравнение докумнетов Word