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

Вниз

Работа с массивом   Найти похожие ветки 

 
allucard   (2007-11-08 13:55) [0]

Есть динамический массив.
К этому массиву нужно добавить 1 байт в начале и два байта в конце.
Как это проще всего сделать?

Как к нему через pointer или memorystream обращаться?


 
Johnmen ©   (2007-11-08 14:05) [1]

Массив чего? Розовых слоников?


 
Reindeer Moss Eater ©   (2007-11-08 14:07) [2]

только по новой распределять память


 
allucard   (2007-11-08 14:07) [3]

массив char (можно и byte)


 
allucard   (2007-11-08 14:08) [4]

динамический массив


 
Palladin ©   (2007-11-08 14:08) [5]

setlength(a,length(a)+3)
move(a[1],a[2],length(a)-3)


 
Palladin ©   (2007-11-08 14:09) [6]

move(a[0],a[1],length(a)-3)


 
allucard   (2007-11-08 14:10) [7]


> Palladin

да, забыл сказать что его нужно передать в процедуру, а с массивом не получается


 
Сергей М. ©   (2007-11-08 14:12) [8]


> его нужно передать в процедуру, а с массивом не получается


В процедуру можно передать все что угодно - хоть массив, хоть розовых слоников.


 
Dib@zol ©   (2007-11-08 14:12) [9]

Введи тип массива. Скажем, такой:

TMyMegaArr = array of Byte;

...

procedure ArrayProc(a:TMyMegaArr);
begin
end;

И передавай скока угодно... :)


 
allucard   (2007-11-08 14:37) [10]

Я обьявил и заполнил динамический массив.

могу я к нему обратиться как к массиву байт.

делаю так:

procedure TForm1.Button8Click(Sender: TObject);
var     g: integer;
    data: array of byte;
begin
setlength(data, 6);
data[0] := 11;
data[1] := 12;
mem:=data;
write_mary_trans(mem, 6, g);
end;

procedure write_mary_trans (mem: pointer; count: integer; var k: integer);
begin
k := (PByteArray(mem)[1]); //  Access violation
end;


 
Palladin ©   (2007-11-08 14:39) [11]

так он у тебя итак массив байт чего ты хочешь?


 
Сергей М. ©   (2007-11-08 14:40) [12]

какой нафих еще mem ?
Где объявление этого идентификатора ?


 
Dib@zol ©   (2007-11-08 14:46) [13]

> могу я к нему обратиться как к массиву байт.

Можешь.

function write_mary_trans (mem: pointer; count: DWORD):Byte;
asm
 PUSH EBX;
 MOV EBX, EAX;
 XOR EAX, EAX;
 MOV AL, BYTE PTR [EBX+EDX];
 POP EBX;
end;


 
Dib@zol ©   (2007-11-08 14:48) [14]

Впрочем, можно и проще.

function write_mary_trans (mem: pointer; count: DWORD):Byte;
asm
MOV AL, BYTE PTR [EBX+EDX];
end;


 
Dib@zol ©   (2007-11-08 14:49) [15]

плин.

function write_mary_trans (mem: pointer; count: DWORD):Byte;
asm
MOV AL, BYTE PTR [EAX+EDX];
end;

Ах да забыл сказать: count в данном случае обозначает элемент массива, к-рый нужно возвратить.


 
allucard   (2007-11-08 15:03) [16]


> Сергей М. ©   (08.11.07 14:40) [12]

mem: pointer


 
Сергей М. ©   (2007-11-08 15:20) [17]


> allucard   (08.11.07 15:03) [16]


Ну и нафих он нужен ?


 
Anatoly Podgoretsky ©   (2007-11-08 15:34) [18]


> массив char (можно и byte)

Если Char, то причем тут Byte


 
Anatoly Podgoretsky ©   (2007-11-08 15:37) [19]

Не трогай указатели, пока не поймешь их. В задаче нет нужды в указателях.


 
Slym ©   (2007-11-09 09:33) [20]

если заранее известно что будет 1 спереди и 2 сзади... проще их зарезервировать и не использовать, а потом делать все что угодно без фсяких распределения памяти и поинтеров


 
Slym ©   (2007-11-09 09:34) [21]

Slym ©   (09.11.07 9:33) [20]
1 спереди и 2 сзади

не нравится мне это :)


 
Anatoly Podgoretsky ©   (2007-11-09 09:59) [22]

> Slym  (09.11.2007 09:34:21)  [21]

Повернись


 
ЮЮ ©   (2007-11-09 10:09) [23]

>
> Повернись


Можно подумать что, когда двое спереди, а один сзади намного лучше, чем сабжевое 1 спереди и 2 сзади. Ноги клеить надо в обоих случаях :)


 
Anatoly Podgoretsky ©   (2007-11-09 10:47) [24]

> ЮЮ  (09.11.2007 10:09:23)  [23]

Броне трусы нужны



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

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

Наверх




Память: 0.49 MB
Время: 0.047 c
15-1193813295
ZeroDivide
2007-10-31 09:48
2007.12.02
Программа для учета персональных финансов - бесплатно...


15-1194187576
lookin
2007-11-04 17:46
2007.12.02
Нужны советы по моноблоку Apple iMac 20"


8-1170614408
K@KTUS
2007-02-04 21:40
2007.12.02
PNG-изображения


15-1193901205
Slider007
2007-11-01 10:13
2007.12.02
С днем рождения ! 1 ноября 2007 четверг


2-1194595850
pathfinder
2007-11-09 11:10
2007.12.02
EExternalException..





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский