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

Вниз

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

 
Сергей М. ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.046 c
15-1218148932
alex-drob
2008-08-08 02:42
2008.09.28
microsoft или apple


2-1219221619
dmitry_12_08_74
2008-08-20 12:40
2008.09.28
Как можно, имея Handle объекта, определить указатель на него


15-1218183143
Dennis I. Komarov
2008-08-08 12:12
2008.09.28
Аборигены! Тут никого не будет? (вторник)


15-1218032249
Tricky
2008-08-06 18:17
2008.09.28
По поводу критерив по которым удаляют топики


2-1219260710
Рома
2008-08-20 23:31
2008.09.28
bios





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