Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.073 c
1-1122645251
ctranik
2005-07-29 17:54
2005.08.21
Вопрос по TreeView-ву


4-1119449194
Семен Сорокин
2005-06-22 18:06
2005.08.21
Расположение заблокированного файла на диске.


3-1121086462
Layner
2005-07-11 16:54
2005.08.21
Как можно добраться из DataSource к свойствам ADOQuery


14-1122443195
Digitman
2005-07-27 09:46
2005.08.21
Проблема FoxPro 2.x ISAM в MS Access 2003


3-1121148609
Aln
2005-07-12 10:10
2005.08.21
Ошибка при попытке присвоить значение ADOQuery.SQL.Text???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский