Форум: "Основная";
Текущий архив: 2003.05.05;
Скачать: [xml.tar.bz2];
ВнизСравнение строк, передаваемых в качестве параметров в функцию Найти похожие ветки
← →
Nomad (2003-04-22 12:22) [0]Уважаемые господа, возникает проблема: при передаче строки в функцию (string) и при сравнении ее с другими string, компилятор не ставит точки останова на блок после сравнения.
type StrArr= array of string;
procedure Proc1(ar:StrArr)
....
if str=arr[i] then
begin
сюда не заходит
end;
.....
В одном случае помог Trim, в другом не получилось. В чем дело? Пробовал функцию CompareStr, тоже не помогло. Откуда компилятор знает, что результат сравнения заведомо ложен? Что можно сделать?
← →
VaS (2003-04-22 12:28) [1]Код покажи целиком
← →
Карелин Артем (2003-04-22 12:55) [2]str - это имя переменной, или стандартная функция дельфи?
← →
Anatoly Podgoretsky (2003-04-22 13:09) [3]Переменная, иначе бы компилятор сильно отругал
← →
Radionov Alexey (2003-04-22 13:12) [4]а оно (proc1) где-то реально вызывается?
← →
Anatoly Podgoretsky (2003-04-22 13:34) [5]А на if str=arr[i] и в других местах есть точки?
← →
Bel (2003-04-22 13:38) [6]А что значит "не ставит точки останова"? Не может поставить красную точку на поле слева, или не останавливается во время работы программы на поставленной точке останова?
← →
Nomad (2003-04-22 14:24) [7]Похоже я разобрался - дело было в том, что команда, идущая после if не имела смысла (в блоке был только continue) и оптимизатор не компилировал ее. Исправил и заработало.
И все-таки непонятно почему до этого у меня не получалось сравнивать (оптимизатор заранее проверял условие и не компилировал код после него) две переменных типа string причем одинаковой длины, пока я не обрезал пробелы ф-цией Trim.
Хочу однако сделать одно замечание: строку, которую я передавал в ф-цию Proc1 я получал: string(TTreeNode.Data^). Может это как-то влияет на сравниваемость?
← →
Skier (2003-04-22 14:30) [8]
> я получал: string(TTreeNode.Data^).
И ты ещё СПРАШИВАЕШЬ ?!
А скажи-ка как ты присваивал данные для узла ?
TTreeNode.Data := ?
← →
Palladin (2003-04-22 15:22) [9]наверно
string(TTreeNode.Data^):=s;
← →
Nomad (2003-04-22 15:40) [10]Добавлял не я, а в другом модуле другой человек. Кажется с помощью TTreeView.AddChildObject(..idNom), где idNom - PString. Перед этим он делал IdNom^:=ПеременнаяТипаString.
Это было из-за несоответсвия типов String и PString^?
← →
Skier (2003-04-22 15:41) [11]PString(TTreeNode.Data)^ - вот это будет String
← →
Palladin (2003-04-22 15:46) [12]только IdNom^ при этом один и тот же....
← →
Nomad (2003-04-22 15:48) [13]Да, кажется откомпилировался правильно даже без Trim. Спасибо, проверю потом на функциональность. Значит приводить к типу нужно до взятия содержимого по адресу? В этом моя ошибка!
← →
Skier (2003-04-22 15:49) [14]>Nomad
> Значит приводить к типу нужно до взятия содержимого по адресу?
>
В яблочко ! :)
← →
Palladin (2003-04-22 15:50) [15]
> Palladin © (22.04.03 15:46)
не читать, написал от невнимательности
хотя может это и правда...
код добавления надо смотреть
← →
Nomad (2003-04-22 16:10) [16]
> только IdNom^ при этом один и тот же....
С добавлением все в порядке, там idNom^ присваиваются строки из полей Query, а сам idNom присваивается TTreeView.Items.Data.
Но все равно спасибо всем за внимание!;-)))))
← →
Skier (2003-04-22 16:12) [17]
> а сам idNom присваивается TTreeView.Items.Data.
Вопрос на засыпку : А память выделяется ? :)
← →
Nomad (2003-04-22 16:20) [18]Да
New(IdNom)
← →
Skier (2003-04-22 16:21) [19]>Nomad
Порядок ! :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.05;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.035 c