Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];

Вниз

скопировать строку в массив   Найти похожие ветки 

 
абабаба   (2006-09-14 10:40) [0]

Необходимо скопировать строку, примерно такого содержания: "1234567890ff", в массив, по 2 символа из строки.

т.е.

p = array of byte;
s = "1234567890ff";

что бы в итоге, в массиве было следующее: ($12, $34, $56, $78, $90, $ff);


 
Рамиль ©   (2006-09-14 10:42) [1]

Один символ - один байт.


 
Dmitrij_K   (2006-09-14 10:43) [2]

И что у тебя не получается?


 
Dmitrij_K   (2006-09-14 10:46) [3]

Str := "1234567890ff;
while str<>"" do
begin
 Byte := StrToInt("$"+copy(str,1,2))
 delete(str,1,2);
 l := length(p);
 setlength(p,l+1);
 p[l] := Byte;
end


 
zamtmn ©   (2006-09-14 10:50) [4]

delete(str,1,2);
setlength(p,l+1);
такие вещи лучше вынести из цикла, будет гораздо быстрее


 
Рамиль ©   (2006-09-14 10:51) [5]


>  l := length(p);
>  setlength(p,l+1);

Не надо так.
До цикла SetLength(p, Length(str) div 2 {+1 если может быть нечетное кол. символов)})


 
SergP.   (2006-09-14 10:52) [6]

> абабаба   (14.09.06 10:40)
> Необходимо скопировать строку, примерно такого содержания:
> "1234567890ff", в массив, по 2 символа из строки.
>
> т.е.
>
> p = array of byte;
> s = "1234567890ff";
>
> что бы в итоге, в массиве было следующее: ($12, $34, $56,
> $78, $90, $ff);


Это не скопировать, это тебе нужно разбить строку по 2 символа, преобразовать каждую такую пару из символьного представления в byte, а потом занести в нужный массив.


 
Dmitrij_K   (2006-09-14 10:53) [7]


> такие вещи лучше вынести из цикла, будет гораздо быстрее

Полностью согласен.


 
абабаба   (2006-09-14 11:00) [8]

Спасибо за предложенный вариант кода, но проблема в том, что упомянутый str, у меня на деле является константой. И не хотелось бы делать лишний телодвижений приравнивая сначала стринговую переменную к константе.

Мало у меня знаний. Лично я пытался в цикле проверять четность i и затем... ничего не вышло.


 
Dmitrij_K   (2006-09-14 11:02) [9]

var j:Integer;
j:=1;
while j<=length(Str) do
 copy(str,j,2);
 j := j + 2;


 
begin...end ©   (2006-09-14 11:03) [10]

SetLength(p, Length(s) div 2);
HexToBin(PChar(s), PChar(p), Length(p));


 
Dmitrij_K   (2006-09-14 11:06) [11]


> SetLength(p, Length(s) div 2);HexToBin(PChar(s), PChar(p),
>  Length(p));

а мы мучаемся Ж)


 
абабаба   (2006-09-14 11:10) [12]

SetLength(p, Length(s) div 2);
HexToBin(PChar(s), PChar(p), Length(p));

а как быть в том случае, если размерность массива задана заранее? p = array [0..32] of Byte;
Ну я понимаю убрать SetLength, а что изменить в HexToBin?


 
zamtmn ©   (2006-09-14 11:12) [13]

>>у меня на деле является константой
нафига нужны промежуточные константы, тогда уж сразу
const p : array [0..5] of byte=($12, $34, $56, $78, $90, $ff);


 
абабаба   (2006-09-14 11:15) [14]


> zamtmn


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


 
begin...end ©   (2006-09-14 11:16) [15]

> абабаба   (14.09.06 11:10) [12]

> а что изменить в HexToBin?

PChar(p) заменить на PChar(@p). Элементы массива, следующие после элемента с индексом 5, при необходимости обнулить самостоятельно.



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

Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.011 c
2-1157966493
Извращенец
2006-09-11 13:21
2006.10.01
Округление в Дельфе


15-1157810484
Furyz
2006-09-09 18:01
2006.10.01
MySQL+Delphi


15-1157697464
Pazitron_Brain
2006-09-08 10:37
2006.10.01
Мой вопрос занимает в орешнике


15-1158144621
SPeller
2006-09-13 14:50
2006.10.01
Помогите найти картинку


2-1157802111
Mr tray
2006-09-09 15:41
2006.10.01
хелп по стандартным командам коиандной строки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский