![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 30.03.2007
Сообщений: 124
|
![]()
Есть два динамических масива:
a,b: array of myrecord; после некоторых манипуляций: длинна a=20, b=0 нужно b:=a;? но компилятор ругаеться, как обмануть? Вариант: setlength(b,length(a)); for i:=0to length(a)-1do b[i]:=a[i]; setlength(a,0); не подходит ![]() Спасибо не нужно, а на весы слева кликнуть не помешает!!! |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 25.03.2007
Сообщений: 18
|
![]()
Синтаксически написано верно но смысл в подобном копировании уловить сложно, я думаю что существует другое и может быть более правильноее решение вашей задачи.
|
![]() |
![]() |
![]() |
#3 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
![]()
А как на счет Множеств? С ними можно проделывать различные операции.
Сам не пробовал, но можно попробовать метод include.
Познавая других, мы познаем себя.
С'est la vie... |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
![]()
var a,b:array of integer;
begin setlength(a,20); setlength(b,length(a)); b:=a; никаких ошибок.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 30.03.2007
Сообщений: 124
|
![]()
мне на game:=fix;
кампилятор пишет: [Error] Unit2.pas(178): Incompatible types game,fix:array of onedat; type onedat=record id,All,last,min,ends:integer; f:boolean; str:TStrings; end; Может какието опции кампилятора нужно вкл. или выкл. game:=@fix[0]; Вот так вот выполняеться, и вроди даже правильно, но вот str - в некоторых случаях, теряется. Я бы скинул исходник, но он громадный, еще и не в одном Unite. Кого заинтересует помогите. ![]() Спасибо не нужно, а на весы слева кликнуть не помешает!!! |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
![]()
onedat=record
id,All,last,min,ends:integer; f:boolean; str:TStrings; end; var Form1: TForm1; s1,s2:array of onedat; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var I: Integer; begin setlength(s1,10); for I := 0 to 9 do begin s1[i].id:=i; s1[i].All:=i; s1[i].last:=i; s1[i].min:=i; s1[i].ends:=i; s1[i].f:=true; s1[i].str:=tstringlist.Create; s1[i].str.Add(inttostr(i)); end; setlength(s2,length(s1)); s2:=s1; showmessage(s2[9].str[0]); end; Все работает
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
![]() |
![]() |
![]() |
#7 |
Heavy metal
Пользователь
Регистрация: 02.04.2007
Сообщений: 42
|
![]()
Если a и b - динамические массивы, то операция b:=a; копирует только указатель на массив, а не сами данные. То есть, после этого, например, b[0] и a[0] - одно и то же место в памяти. Если тебе надо скопировать массив, делай так: b:=Copy(a);
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 30.03.2007
Сообщений: 124
|
![]()
Кажеться я понял, но решить не могу, массивы у меня находятся разных формах, и одна из них модальная, тоесть после некоторых манипуляций закрываеться, как поступить в этом случае?
![]() Спасибо не нужно, а на весы слева кликнуть не помешает!!! |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
![]()
А это здесь причем ? вопрос всего лишь области видимости переменных
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 30.03.2007
Сообщений: 124
|
![]()
у меня компилятор при присвоении одного массива другому пишет: несовмещение типов, почему у вас он это кушает я не знаю, вместо
a:=b я написал a:=@b[0] помоему тоже самое, и все работает, первый раз, после второго начинаются ошибки, может при закрытии окна память освобождаеться и массив указывает на несуществующие данные? Хотя в чем проблема, что ругаеться кампилятор, я не знаю, а хотелось бы. ![]() Спасибо не нужно, а на весы слева кликнуть не помешает!!! |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Pascal масивы | Devikss | Помощь студентам | 2 | 19.06.2008 17:20 |
динамические строки | SeregaPIF | Общие вопросы C/C++ | 1 | 19.11.2007 08:20 |
Динамические объекты | 095 | Общие вопросы Delphi | 1 | 04.10.2007 21:16 |