Форум: "Начинающим";
Текущий архив: 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