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

Вниз

Почему это не работает   Найти похожие ветки 

 
Сергей М. ©   (2008-08-19 15:14) [40]


> решил выяснить все подробности


Что ж ты не обратился за разъяснениями, в первую очередь, к отладчику ?

Отладчик ведь - первый друг, товарищ и брат трояноделов)

А ты почему-то сразу в клинику обратился за диагнозом)


 
Medbe}I{onok XML ©   (2008-08-19 15:15) [41]

Вот решил выяснить все подробности.

Зачем?
Тебе пора новую редакцию хелпа выпускать.
А то в том что у нас, написано одно вранье.


 
Renegat ©   (2008-08-19 15:16) [42]

> [38] Renegat ©   (19.08.08 15:08)
> GlobalReAlloc

Имелось в виду "Принцип, использованный в GlobalReAlloc".


 
Medbe}I{onok XML ©   (2008-08-19 15:19) [43]

Имелось в виду "Принцип, использованный в GlobalReAlloc".

Эти принципы устарели давно.
Согласно новому постановлению вцспс мув по переданному адресу понимает, что автор работает с массивом и даже может определить тип элементов массива.


 
+koha   (2008-08-19 15:20) [44]


> А ты почему-то сразу в клинику обратился за диагнозом)

Ну так а клиника это значит  вы? т.е. форум? так вы здесь диагнозы выдаете только? или еще и лечите?


 
Medbe}I{onok XML ©   (2008-08-19 15:23) [45]

и лечат. но временами попадаются неизлечимые.


 
+koha   (2008-08-19 15:24) [46]


> Medbe}I{onok XML ©   (19.08.08 15:19) [43]

Ну так в том то и дело, что по твоему описанию оно работать и не должно, но вопреки всякой логики работает, вопрос почему же? Объясни.


 
Сергей М. ©   (2008-08-19 15:24) [47]


> вы здесь диагнозы выдаете только?


И диагнозы ставим, и лечим, и калечим, и Шопена заказываем)

Ты ты про отладчик-то так и не  сподобился прояснить ситуацию ...


 
Medbe}I{onok XML ©   (2008-08-19 15:26) [48]

Объясни.

за этим не сюда. терапевт в соседней палате обход делает.


 
Терапевт   (2008-08-19 15:36) [49]

var a,b : array of integer; i : integer;
begin
SetLength(a,3);

a[0] := maxint;
a[1] := pred(maxint);
a[2] := pred(pred(maxint));

SetLength(b,3);
Move(a[0],b[0],3);
//копирование "спичек"
for i := 0 to Pred(Length(b)) do ShowMessage(Format("a = %d b= %d",[a[i],b[i]]));

//Порча памяти сетленсом
SetLength(a,4);
for i := 0 to Pred(Length(a)) do ShowMessage(Format("a = %d",[a[i]]));
end;


 
Сергей М. ©   (2008-08-19 15:37) [50]


> вопреки всякой логики работает


Потому что копию туда-сюда гоняет.
Абсолютно бессмысленная работа тобой выполняется)


 
Medbe}I{onok XML ©   (2008-08-19 15:39) [51]

Потому что копию туда-сюда гоняет.

Часть копии.


 
Сергей М. ©   (2008-08-19 15:42) [52]


> Часть копии.


А неважно.
Копия она и в Африке копия)


 
Medbe}I{onok XML ©   (2008-08-19 15:47) [53]

А неважно.

Важно. Так рождаются легенды про мув работающий с элементами массива.


 
Сергей М. ©   (2008-08-19 15:48) [54]


> +koha   (19.08.08 15:24) [46]


var
Conter: integer;
N: array of integer;
buf: array of integer;
//..................................
procedure TForm2.Button3Click(Sender: TObject);
Var
num:integer;
begin
Num:=Length(N);
SetLength(Buf,Num);
Move(N[0], Buf[0], Num);
Inc(Num);
setlength(N, 0); // бочка дегтя в твою ложку мёда)
setlength(N, Num);
move(Buf[0], N[0], Num-1);
N[Num-1]:=num;
for num:=0 to Length(N)-1 do
  memo1.Lines.Add(IntToStr(N[num]));
memo1.Lines.Add("----------------------------");


 
+koha   (2008-08-19 15:51) [55]


> Сергей М. ©   (19.08.08 15:24) [47]
>
> Ты ты про отладчик-то так и не  сподобился прояснить ситуацию
> ...


Ща картинку сброшу. Отладчик говорит, что Move() все-таки копирует элементы массива.


 
+koha   (2008-08-19 15:54) [56]


> Сергей М. ©   (19.08.08 15:48) [5


> setlength(N, 0); // бочка дегтя в твою ложку мёда)

Причем это работает, если массивы глобальные-переменные, а если локальные, то нет, почему?


 
Сергей М. ©   (2008-08-19 15:54) [57]


> Отладчик говорит, что Move() все-таки копирует элементы
> массива


Я вообще-то о той "версии", которая у тебя "падает") ..


 
Сергей М. ©   (2008-08-19 15:57) [58]


> Причем это работает


Кто работает ? Бочка дёгтя ?
Не работает она, на то она и бочка - ни "глобально", ни тем более "локально")


> а если локальные, то нет, почему?


Потому что разное время жизни.


 
Medbe}I{onok XML ©   (2008-08-19 16:04) [59]

Ща картинку сброшу. Отладчик говорит, что Move() все-таки копирует элементы массива.

пример из [49] не убедил?


 
Сергей М. ©   (2008-08-19 16:05) [60]


> koha


var
Conter: integer;
N: array of integer;
buf: array of integer;
//..................................
procedure TForm2.Button3Click(Sender: TObject);
Var
num:integer;
begin
Num:=Length(N);
SetLength(Buf,Num);
Move(N[0], Buf[0], Num * SizeOf(N[0])); // компенсирующая бочка мёда
Inc(Num);
setlength(N, 0); // бочка дегтя
setlength(N, Num);
move(Buf[0], N[0], (Num-1) * SizeOf(Buf[0])); // еще одна компенсирующая бочка мёда
N[Num-1]:=num;
for num:=0 to Length(N)-1 do
 memo1.Lines.Add(IntToStr(N[num]));
memo1.Lines.Add("----------------------------");


То же самое бестолковое "гониво" данных тудя-сюда, но корректное с т.з. логики.

Разницу осюсяешь ?


 
+koha   (2008-08-19 16:09) [61]

>Сергей М. ©   (19.08.08 16:05) [60]

> Разницу осюсяешь ?


- "осюсяю"  картинка отменяется.


 
Medbe}I{onok XML ©   (2008-08-19 16:09) [62]

Отладчик говорит, что Move() все-таки копирует элементы массива.

var pInt : PInteger; i : integer;
begin
New(pInt);
i := 777;
Move(i,pInt^,SizeOf(i));
ShowMessage(IntToStr(pInt^));

ShowMEssage("Спичка содержит " + IntToStr(SizeOf(i)) + " байт");
end;

Где здесь массив, с элементами которого работал бы мув?
Или  как он догадался, что массива нет?


 
oldman ©   (2008-08-19 16:13) [63]


> Medbe}I{onok XML ©  


Плюнь, пациента мы таки потеряли...


 
+koha   (2008-08-19 16:22) [64]

"розибралси"  все-таки, извеняйте за мое занудство.....

move(Move(N[0], Buf[0], Num) ничего не копировало вообще ни в Buf ни в N, а работало потому как вы и говорили setlength(N, num) ничего не ломал.


 
oldman ©   (2008-08-19 16:28) [65]

А почему _koha стал +koha?
Забанили, что ли?


 
Сергей М. ©   (2008-08-19 16:29) [66]


> ничего не копировало вообще


Да нифига ты не "розибралси")

Мув не копирует как минимум в одном случае - когда Num = 0



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

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

Наверх




Память: 0.59 MB
Время: 0.022 c
11-1189880255
grim
2007-09-15 22:17
2008.09.28
опять про GRush


1-1198966864
Michael
2007-12-30 01:21
2008.09.28
DDE в сервисе.


15-1217913443
palva
2008-08-05 09:17
2008.09.28
Ega23 наверно в курсе


6-1193143844
andreoman
2007-10-23 16:50
2008.09.28
как программно изменить свой ip-адрес


2-1218831398
AlexDan
2008-08-16 00:16
2008.09.28
О StrToFloat