Форум: "KOL";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
ВнизРабота со строками Найти похожие ветки
← →
chum (2005-01-14 21:08) [0]Есть такая проблемка.
есть переменная S:PChar
далее делаю присваивание
S:="xxxxxxxxxxxxxxxxxxxxxxx";
далее
S[1]:="q" - вот на этом месте приложение вылетает с ошибкой,
самое интересное, что при использовании VCL всё прекрасно работает.
Мне кажется что надо использовать какую-то директиву, но вот какую не пойму. Помогите решить проблему.
← →
Ajax © (2005-01-14 23:05) [1]PChar - это указатель на Char. То есть в переменной S ты хранишь адрес первого символа строки. Поэтому мне кажется использовать S[1] крайне сомнительно. Imho нужно либо использовать приведение типов, либо вычислять адрес нужного символа и писать туда.
← →
chum (2005-01-14 23:09) [2]2Ajax
Ты видимо не внимателmyj прочёл, такое использование не сомнительно, ведь приработе с VCL всё нормально и не возникает никаких ошибок. Видимо в VCL используется какая-то директива.
Да и ещё, если для S выделять память динамически, то и в KOL всё работает.
← →
nicesc (2005-01-15 12:56) [3]chum
Меня раньше этот вопрос тоже интересовал
if self_ <> nil then
Result := self_.WndProc( M ) // Падаем тут
else
if Assigned( Applet ) then
Result := Applet.WndProc( M )
else
Result := DefWindowProc( W, Msg, wParam, lParam );
{$IFDEF DEBUG_ENDSESSION}
Посмотрел в отладчике, проблема со стэком:
Должно быть после
004037F8 |. 8B45 F8 MOV EAX,[DWORD SS:EBP-8]
004037FB |. 8B08 MOV ECX,[DWORD DS:EAX]
ECX=0040301C
а на деле в ЕСХ лежит начало строки, то есть 4 байта строки
ЕСХ=65657165 (eeqe)
Дело в том, что полсе присваивания:
s[1]:="q";
delphi вызывает ф-ию, для дополнительной обработки переменной(PChar), народ поясните на кой?
← →
RA © (2005-01-17 11:05) [4]Да, у меня проблема с PChar тоже была. Я вроде делал так:
var S:array [0..1023] of char
По-сути дела тот же PChar, но так вроде лучше. И в конце надо будет самому добавлять chr(0). Проблем с присвоением S[1]:="q" не будет.
← →
Gleb (2005-01-17 11:53) [5]2 RA
Imho, Pchar - указатель, занимает в памяти 4 байта.
Объявление var S:array [0..1023] of char резервирует в памяти 1Кбайт, поэтому, говорить, что это тот же PChar - некорректно.
← →
thaddy (2005-01-17 19:40) [6]S:String;
Cast it to Pchar, if needed use setlength.
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.031 c