![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
налажение памяти в структуре с динамическим масивом
alex-drob © (2008-06-03 23:38:00)Не знаю как правельно назвать вопрос, вобщем суть в следующем, есть вто такой код:
type
TUserContact = record
flag:dword;
group:dword;
adr:pchar;
nick:pchar;
serverflag:dword;
status:dword;
phone:pchar;
end;
type
TGroupContact = record
flag:integer;
name:pchar;
end;
type
TContactList = record
error: dword;
GroupNumber: dword;
GroupMask: PChar;
ContactMask: PChar;
Groups: array of TGroupContact;
Users: array of TUserContact;
end;
............
SetLength(cl.Groups,cl.GroupNumber);
for i:=0 to cl.GroupNumber-1 do
begin
move(buf[n],cl.Groups[i].flag,4);
n:=n+4;
move(buf[n],sz,4);
n:=n+4;
cl.Groups[i].name:=PChar(copy(buf,n,sz));
n:=n+sz;
end;
когда цикл проходит первый раз, всё ок. но потом не пойму в чём дело.
при прохождении каждого следующего раза, все данные в cl.Groups в том числе и в cl.Groups[0] начинают меняться, обрезаются последнии буквы и слов и цифры меняются.
Из за чего это может быть?
Anatoly Podgoretsky (2008-06-04 16:48:00) [1]> alex-drob (04.06.2008 14:02:08) [8]
Так не превращай, говори только по делу, приводи детали, как делал, что не понимаешь.
alex-drob (2008-06-04 15:05:00) [2]Ну значить я балбес! А на счёт ссылки, искать не хочу, но написанно было примерно, используй PChar или String, не для конкретного примера, это я просто сказал
> Amoeba © (04.06.08 14:13) [9]
За ссылку спасибо! хорошая статья, я там ещё про сокеты как раз нашол статью, которая мне тоже помогла!
Palladin (2008-06-04 14:55:00) [3]
> alex-drob © (04.06.08 14:43) [11]
Шарик, ты балбес. Я у тебя спрашивал ссылку, где тебе сказали, что PChar нужно, а не String. Дабы посмотреть и удостовериться, что без PChar'а действительно не обойтись. В огромном подовляющем большинстве случаев достаточно использовать String. Это раз. Два. Мои дельные ответы не для таких как ты. Ты их просто не поймешь.
alex-drob (2008-06-04 14:43:00) [4]Удалено модератором
Примечание: Давай без наездов
Palladin (2008-06-04 14:21:00) [5]
> alex-drob © (04.06.08 11:32) [5]
>
> > Anatoly Podgoretsky © (04.06.08 09:55) [4]
>
> Вот так всегда! Сначало в одном вопросе напишут: Используй
> PCHar!
покажи пальчиком, кто тебя обидел? :)
Amoeba (2008-06-04 14:13:00) [6]Автору вопроса рекомендую почитать эту статью:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1206
alex-drob (2008-06-04 14:02:00) [7]
> Anatoly Podgoretsky © (04.06.08 13:54) [7]
ладно, проехали! очередной вопрос превратили в "потрепаться"
Anatoly Podgoretsky (2008-06-04 13:54:00) [8]> alex-drob (04.06.2008 11:32:05) [5]
Некоторые не в состоянии понять ответы.
Правильный_Вася (2008-06-04 11:33:00) [9]
> на лажение памяти
это от слова лажа?
alex-drob (2008-06-04 11:32:00) [10]
> Anatoly Podgoretsky © (04.06.08 09:55) [4]
Вот так всегда! Сначало в одном вопросе напишут: Используй PCHar!
А потом в другом: Нафига ты его используешь!
Anatoly Podgoretsky (2008-06-04 09:55:00) [11]Спрашивается и нафига новички лезут работать с указателями не понимая и не умея работать. string конечно использовать не красиво, не по пацански.
Reindeer Moss Eater (2008-06-04 09:39:00) [12]потому что пушкин еще спит и не успел выделить память под строки на которые указывают твои pchar поля записей.
alex-drob (2008-06-04 00:45:00) [13]ну вобщем проблема ушла после замены типа name:pchar; на string
но всё же интернесно почему так с pchar
alex-drob (2008-06-03 23:51:00) [14]нет, я ошибся цифры не меняються!
вобщем получаеться, что при каждом следующем прохождении цикла, у предыдущего слова исчезает последняя буква, точнее не исчезает, а превращаеться в другой символ