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

Вниз

Вообще ничего не понимаю что происходит со значением переменной.   Найти похожие ветки 

 
Hereticsoul ©   (2004-10-06 13:37) [0]

Уважаемые мастера вот кусок кода:

//..................
type
 Titems = record
   ID: integer;
   Name: string;
   Access_Level: integer;
   Parent_Number: integer;
   Level: integer;
   Number_In_Category: integer;
   Comment: string;
   Count: integer;
   typ: integer;
   replace: string;
 end;

type
 tnodes = record
   count: integer;
   item: ttreenode;
 end;
//.............

var
 aclevel, i: integer;
 items: array[0..50] of titems;
 nodes: array[0..500] of tnodes;
 nodes1: array[0..500] of tnodes;

//...............

procedure TForm5.sButton1Click(Sender: TObject);
var
 data: TIdMultiPartFormDataStream;
 item, tmp,temps: string;
 flg, x, flg1, i10: integer;
 z, z1: ttreenode;
 zzz:tstringlist;
begin
//...........здесь я получаю верную(!) строку item с разделителями

while pos("|", item) > 0 do
 begin
   items[flg].ID := strtoint(copy(item, 0, pos("|", item) - 1));
   //showmessage(copy(item, 0, pos("|", item) - 1));
   delete(item, 1, pos("|", item));
   items[flg].Name := copy(item, 0, pos("|", item) - 1);
   //showmessage(copy(item, 0, pos("|", item) - 1));
   delete(item, 1, pos("|", item));
   items[flg].Access_Level := strtoint(copy(item, 0, pos("|", item) - 1));
   delete(item, 1, pos("|", item));
   items[flg].Parent_Number := strtoint(copy(item, 0, pos("|", item) - 1));
   delete(item, 1, pos("|", item));
   items[flg].Level := strtoint(copy(item, 0, pos("|", item) - 1));
   delete(item, 1, pos("|", item));
   items[flg].Number_In_Category := strtoint(copy(item, 0, pos("|", item) - 1));
   delete(item, 1, pos("|", item));
   items[flg].Comment := copy(item, 0, pos("|", item) - 1);
   delete(item, 1, pos("|", item));
   items[flg].typ := strtoint(copy(item, 0, pos("|", item) - 1));
   delete(item, 1, pos("|", item));
   items[flg].replace := copy(item, 0, pos("|", item) - 1);
   delete(item, 1, pos("|", item));

   flg := flg + 1;
   items[0].Count := items[0].Count + 1;
 end;

x := 0;
 nodes[0].count := 0;
 nodes[1].count := 0;

 for i := 0 to items[0].Count-1 do
 begin
   if items[i].Level = 0 then
   begin
     temps:=items[i].Name;
     nodes[nodes[0].count].item := tree.Items.AddChild(z1, temps);
//!!!! и вот здесь значение переменной
items[items[0].count-1].Name принимает вид что-то вроде " ¬­C XIІ xµ     8          яяяяяяяя   &   { " - набор непонятных символов.
     nodes1[nodes[0].count].item := nodes[nodes[0].count].item;
     nodes[0].count := nodes[0].count + 1;
     nodes1[0].count := nodes1[0].count + 1;
     nodes1[nodes[0].count].item := tree.Items.AddChild(nodes[nodes[0].count - 1].item, "1");
     nodes1[0].count := nodes1[0].count + 1;
     nodes1[nodes[0].count].item := tree.Items.AddChild(nodes[nodes[0].count - 1].item, "2");
     nodes1[0].count := nodes1[0].count + 1;

   end;
 end;

ПОЧЕМУ????


 
Семен Сорокин ©   (2004-10-06 14:35) [1]

range check error выставь


 
Hereticsoul ©   (2004-10-06 15:10) [2]

Ой млин а это как?Простите за глупость.


 
Hereticsoul ©   (2004-10-06 15:15) [3]

Вообщем выставил ее и теперь он мне ее выдает в начале заполнения на строке

items[flg].ID := strtoint(copy(item, 0, pos("|", item) - 1));


 
Семен Сорокин ©   (2004-10-06 15:20) [4]


> Hereticsoul ©   (06.10.04 15:15) [3]
> Вообщем выставил ее и теперь он мне ее выдает в начале заполнения
> на строке
>
> items[flg].ID := strtoint(copy(item, 0, pos("|", item) -
> 1));


flg вышел за границу массива items


 
Amoeba ©   (2004-10-06 15:21) [5]


> items[flg].ID := strtoint(copy(item, 0, pos("|", item) -
> 1));

У строки нет символа с индексом 0. Счет начинается с 1.
RTFM!!!


 
Hereticsoul ©   (2004-10-06 15:25) [6]

I>
> У строки нет символа с индексом 0. Счет начинается с 1.
> RTFM!!!


А почему ошибку не выдает??
И когда ставлю 1 то первый знак строки куда-то подозрительно проподает


 
Hereticsoul ©   (2004-10-06 15:26) [7]

И вообще 0 это не индех а позиция каретки и она может быть нулевой


 
Семен Сорокин ©   (2004-10-06 15:28) [8]


> Hereticsoul ©   (06.10.04 15:26) [7]
> И вообще 0 это не индех а позиция каретки и она может быть
> нулевой

не спорьте, а лучше почитайте справку по copy


 
Amoeba ©   (2004-10-06 15:30) [9]


> Hereticsoul ©   (06.10.04 15:26) [7]
> И вообще 0 это не индех а позиция каретки и она может быть
> нулевой

Чушь городишь. В орешник захотелось? Позиция каретки здесь ни при чем. Этот параметр - индекс превого символа в строке, с которого начинается копируемый фрагмент. И он не может быть меньше единицы.
Читай справку по Copy до полного прояснения.


 
ЮЮ ©   (2004-10-07 03:47) [10]

>И когда ставлю 1 то первый знак строки куда-то подозрительно проподает

begin
//...........здесь я получаю верную(!) строку item с
разделителями

значит получаешь неверную(!) строку


 
Hereticsoul ©   (2004-10-07 13:55) [11]

Удалено модератором



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

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

Наверх




Память: 0.49 MB
Время: 0.033 c
1-1097058760
Wish
2004-10-06 14:32
2004.10.24
Invalid class typecast


1-1097223451
Аня
2004-10-08 12:17
2004.10.24
Архивация


1-1097587817
Павел
2004-10-12 17:30
2004.10.24
Выход из цикла по нажатию кнопки


1-1097470536
BillyJeans
2004-10-11 08:55
2004.10.24
Регулятор громкости на панели задач...


1-1097133565
Leksiy
2004-10-07 11:19
2004.10.24