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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.025 c
4-1179517041
YARA
2007-05-18 23:37
2007.12.02
Рабочий стол


1-1189438405
rar
2007-09-10 19:33
2007.12.02
MainMenu


4-1179813270
новичок2
2007-05-22 09:54
2007.12.02
Вызов ConvertStringSecurityDescriptorToSecurityDescriptor


3-1185045835
barakuda
2007-07-21 23:23
2007.12.02
ExpressQuantumGrid 5 .. доступ к ячейке


15-1193680169
SQL555
2007-10-29 20:49
2007.12.02
Проблема с процедурой SQL