Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2009, 22:06   #1
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию сбрасывается Глобальный динамический массив...

Пытаюсь понять, что за ерунда. произвожу следующее :
Цитата:
var gerg:array of byte;

procedure TEditor1.Button1Click(Sender: TObject);
var
scopy:string;
begin
scopy:='fwef';
SetLength(gerg,length(sCopy));
Move(scopy,gerg,length(sCopy)); //отображаются верные значения
end; //breakpoint; сбрасывает значения в глобальном массиве, кроме длинны
Видимо pointer куда-то слетает ...
Дак что теперь GetMem выбивать или что ? вроде место и так уже зарезервировано.

Если кто знает, за совет примного благодарен

PS: Кстати, это я уже углубился в проблему, на самом деле эта проблема с одним из property
объекта , являющегося динамическим массивом(Если это конечно как-то ещё изменит ситуацию)
Don't worry be happy

Последний раз редактировалось Izhic; 17.05.2009 в 22:16.
Izhic вне форума Ответить с цитированием
Старый 17.05.2009, 22:52   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Скорее всего надо так:
Move(scopy[1],gerg,length(sCopy));
Move низкоуровневая процедура, которая тупо копирует память (содержимое) из одного адреса в другой. Если указать scopy (а не scopy[1]), то в массив будет скопирован и тот байт, в котором находится длина строки, а в этом случае он не нужен. Может из-за этого создается впечатление, что происходит "сброс".
Скандербег вне форума Ответить с цитированием
Старый 17.05.2009, 23:12   #3
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию

Цитата:
Move(scopy[1], item[Curr].Value[0],length(sCopy));

При работе с памятью, всё в лес ухожу
Скандербег, Спасибо, теперь вроде работает
Don't worry be happy
Izhic вне форума Ответить с цитированием
Старый 17.05.2009, 23:29   #4
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Все нормально. Не надо уходить ни в лес, ни в монастырь, если понять что и как. У scopy один адрес, а scopy[1] - другой. Вот и весь "секрет".
Скандербег вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический массив Ivin Мультимедиа в Delphi 14 27.02.2009 23:22
Глобальный хук на мышь не глобальный О_о JTG Общие вопросы Delphi 3 05.06.2008 17:41
динамический массив Dimon Паскаль, Turbo Pascal, PascalABC.NET 3 21.03.2008 18:08
Динамический массив _ares_ Паскаль, Turbo Pascal, PascalABC.NET 3 26.12.2007 23:54
динамический массив Diller Помощь студентам 48 07.10.2007 16:43