Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перевод массива ASCLL кодов в их символьное представление


DelphiN! ©   (2006-03-09 12:52:00) 

Имеется масив ascll кодов(сетевой пакет), необходимо их быстро перевести в string.
Сейчас перевожу так :

for i := 0 to 1000 do
 s := s+chr(NetPackageArray[i]);

Однако код работает недопустимо долго, так как сетевых пакетов очень много. Может можно ускорить перевод?


Leonid Troyanovsky   (2006-03-09 16:22:00) [1]


> Alkid ©   (09.03.06 16:10) [17]

> Про какой nil? Если ты про 0 в коняе строки (z-string),


null, конечно. Sorry.

--
Regards, LVT.


Alkid   (2006-03-09 16:10:00) [2]


> Про nil ничего не известно.

Про какой nil? Если ты про 0 в коняе строки (z-string), то ты прав. Данный метод сработает только если в массиве последний байт == 0


Leonid Troyanovsky   (2006-03-09 15:29:00) [3]


> Alkid ©   (09.03.06 15:16) [15]

> Можно проще: s := PChar(@NetpackageArray[0]), где s - string`овая
> переменная


Про nil ничего не известно.

--
Regards, LVT.


Alkid   (2006-03-09 15:16:00) [4]


> setlength(s,1001);
> move(NetPackageArray[0],s[1],1001);

Можно проще: s := PChar(@NetpackageArray[0]), где s - string`овая переменная


begin...end   (2006-03-09 14:11:00) [5]

> DelphiN! ©   (09.03.06 13:46) [11]

> В них исчются слова, из списка, и если они там имеются покет
> сохраняется в файл.

Не совсем понятно, зачем для этого нужно копировать массив в строку. Можно прямо в массиве NetPackageArray и искать...


Anatoly Podgoretsky   (2006-03-09 14:07:00) [6]

Лучше нейронную сеть.


DelphiN!   (2006-03-09 13:48:00) [7]


> И что это должно изменить? Лучше, IMHO, добавить процессоров.


Да так ведь компьютер не сильно тормозить будет ...


DelphiN!   (2006-03-09 13:46:00) [8]


>  [10] Leonid Troyanovsky ©   (09.03.06 13:41)


В них исчются слова, из списка, и если они там имеются покет сохраняется в файл. Вобщем в трафике ищутся компроматы :)


Leonid Troyanovsky   (2006-03-09 13:41:00) [9]


> DelphiN! ©   (09.03.06 13:34) [8]

> Хоть заранее память выделяй, хоть походу, всеравно процессор
> на 100% грузится

> Придется в отдельный поток выносить и ему приоритет низкий
> ставить наверное ...


И что это должно изменить? Лучше, IMHO, добавить процессоров.

Кста, чего с этими строками далее делают?

--
Regards, LVT.


DelphiN!   (2006-03-09 13:35:00) [10]

Придется в отдельный поток выносить и ему приоритет низкий ставить наверное ...


DelphiN!   (2006-03-09 13:34:00) [11]

Хоть заранее память выделяй, хоть походу, всеравно процессор на 100% грузится


DelphiN!   (2006-03-09 13:32:00) [12]


> А что это за коды такие, ASCLL?


ASCII


API   (2006-03-09 13:24:00) [13]

Перевод массива ASCLL кодов

А что это за коды такие, ASC LL?


Fay   (2006-03-09 13:08:00) [14]

Тогда уж SetString


SergP.   (2006-03-09 13:05:00) [15]

setlength(s,1001);
move(NetPackageArray[0],s[1],1001);


DelphiN!   (2006-03-09 13:03:00) [16]


>  [1] SergP.   (09.03.06 12:59)


Да это массив байтов
array [0..$10000 - 1] of Byte;


SergP.   (2006-03-09 13:00:00) [17]

либо если NetPackageArray это масив байтов то перенести в строку с помощью move


SergP.   (2006-03-09 12:59:00) [18]


> for i := 0 to 1000 do
>  s := s+chr(NetPackageArray[i]);


Не знаю что там у тебя NetPackageArray[i]
но по идее если сразу выделить память под строку, а не делать это 1000 раз по немногу, то должно быть немного быстрее...

Setlength(s,1001);
for i:=0 to 1000 do
s[i+1]:=chr(NetPackageArray[i]);


Наверх

Титульная страница Поиск, карта сайта Написать письмо