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

Вниз

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

 
Andrey_ka   (2008-11-10 17:24) [0]

Удалено модератором
Примечание: СПАМ


 
Palladin ©   (2008-11-10 17:27) [1]


> но она вставляет только сначала масива

то есть это move виновата?


 
Сергей М. ©   (2008-11-10 17:31) [2]


> нужно вставить


Что значит "вставить" ?


 
Сергей М. ©   (2008-11-10 17:33) [3]


> move, но она вставляет


Меня тоже не "вставляет" move(), меня "вставляет" вставлялка попроще и поочевидней:

PInteger(@MyArray[5])^ := i;


 
Поросенок Винни-Пух ©   (2008-11-10 17:35) [4]

var pb : PByte;
begin
pb := адрес массива;
inc(pb,смещение_пятого_от_начала);
Move(source,pb^,4);


 
Andrey_ka   (2008-11-10 17:37) [5]

тип Integer состоит из 4 байт , вот я и хочу чтобы в масив были записаны эти байты. Если 1 переменная  проблем нет, move справляется, а как вставить не сначала а с 5 байта ну или 8, неважно


 
Palladin ©   (2008-11-10 17:44) [6]


> Andrey_ka   (10.11.08 17:37) [5]

уже целых два ответа дали... первый красивше


 
Andrey_ka   (2008-11-10 17:49) [7]

сори не замеил! спасибо


 
Riply ©   (2008-11-10 19:51) [8]

> [6] Palladin ©   (10.11.08 17:44)
> уже целых два ответа дали... первый красивше

Неа. На топиковый вопрос не дали ни одного,
ибо они не "вставляют" а записывают :)


 
Сергей М. ©   (2008-11-10 20:01) [9]

Вот и нашу Сашу (с) тоже "не вставляет" то что не вставляет)


 
palva ©   (2008-11-10 20:01) [10]

Да еще не раскрыт вопрос о порядке байтов в типе Integer. В конференции для начинающих на это невредно обратить внимание.


 
Anatoly Podgoretsky ©   (2008-11-10 20:13) [11]

> Сергей М.  (10.11.2008 20:01:09)  [9]

Что бы вставило надо правильные грибы использовать.


 
Anatoly Podgoretsky ©   (2008-11-10 20:15) [12]


> palva ©   (10.11.08 20:01) [10]

Он стандартный и определен фирмой Интел и он простой, математически строгий - младшие байты по младшим адресам. С ним просто работать, в отличии от обратного порядка.


 
Сергей М. ©   (2008-11-10 20:24) [13]


> Anatoly Podgoretsky ©   (10.11.08 20:13) [11]


Мало использовать правильные грибы - их еще надо и правильно использовать !
Иначе не вставит)


 
Anatoly Podgoretsky ©   (2008-11-10 20:32) [14]

> Сергей М.  (10.11.2008 20:24:13)  [13]

Но выбор первичен, неправильный выбор никакой повар/доктор не исправит.


 
Andrey_ka   (2008-11-12 14:18) [15]

ответа всего 2 остальное пустой треп....

ни один из ответов полностью модернизировать под цели не смог, а цели такие:
нужны 3 процедуры или функции

первая процедура на подобии move записывает  из одного
участка памяти в другой определенное количество байт
procedure CopyBytes(ps,pd:pointer;size:byte);
begin
move(ps^,pd^,size);
end;
она вроди работает коректно

вторая возвращает строку со значением каждого байта (через запяту)
Function BufInStr( const Source; count : Integer;Rozdel:char = ","):string;
var
 S: PChar;
 I: Integer;
begin
 S := PChar(@Source);
 result:="";
   for I :=0 to count-1 do
   result:=result+Rozdel+inttostr(ord(S[I]));
 delete(result,1,1);
end;

и третья обратная второй
Function StrInBuf(s:string;Dest:pointer;Rozdel:char = ","):boolean;
var
 b: PChar;
 I: Integer;
 ch:char;
 s1:string;
begin
b := Dest;
result:=false;
while length(s)>0 do
begin
s1:=copy(s,1,pos(rozdel,s)-1);
delete(s,1,length(s1)+1);
ch:=chr(StrToInt(s1));
b[i]:=ch;
inc(i);
end;
result:=true;
end;

а вот с другими двумя проблема
пока в качестве параметров передаем числа вроди работает, но вот если
передаем элемент масива, то вторая функция бред выводит:(
помогите плз!

procedure TForm1.Button1Click(Sender: TObject);
var i:longint;
t:cardinal;
b:array of byte;
begin
t:=StrToInt(e1.text);
Label1.Caption:=BufInStr(t,4);
setlength(b,4);
BufInbuf(t,@b[0],4);
label2.Caption:="";
for i:=0to length(b)-1 do
label2.Caption:=label2.Caption+inttostr(b[i]);
BufInbuf(b[0],@i,4);
Label3.Caption:=inttostr(i);
caption:=BufInStr(b,4);
i:=0;
StrInBuf(Label1.Caption+",",@i);
Label4.Caption:=inttostr(i);
StrInBuf(Label1.Caption+",",@b[0]);
label5.Caption:="";
for i:=0to length(b)-1 do
label5.Caption:=label5.Caption+inttostr(b[i]);
ShowMessage(BufInStr(b,4));
end;



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

Текущий архив: 2008.12.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
3-1211888660
Dmitry_177
2008-05-27 15:44
2008.12.21
Дата/ДатаВремя в SQL запросах БД Access


10-1150811466
Smith
2006-06-20 17:51
2008.12.21
Как создать объект из dll?


15-1224484440
Slider007
2008-10-20 10:34
2008.12.21
С днем рождения ! 19 октября 2008 воскресенье


15-1224835973
Рамиль
2008-10-24 12:12
2008.12.21
ПО для прокладки маршрутов


10-1151524219
AlexeyT
2006-06-28 23:50
2008.12.21
WebBrowser: убрать предложение сохранить файл