реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Делфи. Ищу функцию типа Pos(s1,s2), но со стартом поиска не с 1 символа
_Pasha
сообщение Jan 25 2012, 08:19
Сообщение #31


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Pchar или string?
Напомню, если включено {$H+}, то это как раз описанный Вами случай. Надо выключить.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 25 2012, 08:31
Сообщение #32


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(_Pasha @ Jan 25 2012, 13:19) *
Pchar или string?
Напомню, если включено {$H+}, то это как раз описанный Вами случай. Надо выключить.

Именно "голый" string. Это AnsiString в динамической памяти.

H+ включено. Если выключаю, то куча ошибок компиляции.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 25 2012, 08:56
Сообщение #33


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(GetSmart @ Jan 25 2012, 11:31) *
H+ включено. Если выключаю, то куча ошибок компиляции.

Значит, с нулём в конце надо уважительно быть , вставлять его в середину и прочие фокусы недопустимы. Кстати, утечки при освобождении строки могут быть, если для определения ее длины используется strlen(). Подробностей не помню.

Сообщение отредактировал _Pasha - Jan 25 2012, 08:56
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 25 2012, 09:11
Сообщение #34


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(_Pasha @ Jan 25 2012, 13:56) *
Значит, с нулём в конце надо уважительно быть , вставлять его в середину и прочие фокусы недопустимы. Кстати, утечки при освобождении строки могут быть, если для определения ее длины используется strlen(). Подробностей не помню.

Не. В делфе не так. ИМХО этот ноль - просто костыль для си-совместимости строк, которые могут выводиться куда-то функциями (винды) с сишными аргументами. Например в Application.MessageBox(). Там и преобразование адреса сделано через PChar(name). Хотя раньше из-за этого нуля я думал что создаётся временная копия.

Этот string ещё как-то криво типизируется в 5-ой делфе. Поставил опцию H-, оно заругалось, что в компоненте тип string, а у меня в проге ShortString (хотя указан string). Далее я поменял все string в проге на AnsiString. Опять ругается, что в компоненте string, а у меня в проге AnsiString. Хотя вроде не должен.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Jan 25 2012, 14:02
Сообщение #35


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



А там где-то в настройках компилятора есть что-то про этот ShortString.. подробностей опять таки не помню, дэлфей щас нет под рукой.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 26 2012, 05:32
Сообщение #36


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(GetSmart @ Jan 25 2012, 13:45) *
Недокументированная фича?

Я где-то про это читал, так что немножко документированнаяsm.gif Но где читал - не помню.
Цитата(GetSmart @ Jan 25 2012, 15:11) *
Не. В делфе не так. ИМХО этот ноль - просто костыль для си-совместимости строк, которые могут выводиться куда-то функциями (винды) с сишными аргументами.

Именно. Дельфя обеспечивает ноль на позиции (длина строки + 1). При этом нули в самой строке вполне допустимы (но они обманут функции, принимающие в качестве аргумента PChar).


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st August 2025 - 23:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.02351 секунд с 7
ELECTRONIX ©2004-2016