powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Incompatible types: 'Dynamic array' and 'array of
16 сообщений из 16, страница 1 из 1
Incompatible types: 'Dynamic array' and 'array of
    #39973014
neteurt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
2.
3.
4.
5.
function TForm.CheckDbData(pArrDbData: array of String): boolean;
var
   test: array of String;
begin
    test := pArrDbData;



Подскажите как в test присвоить данные которые находятся в pArrDbData
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973023
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neteurt,

Код: pascal
1.
2.
SetLength(test,Length(pArrDbData));
Move(pArrDbData[0], test, Length(pArrDbData));
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973024
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а по поводу ошибки, то в параметрах у тебя открытый массив, а в var динамический
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973031
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Move(pArrDbData[0], test[0], Length(pArrDbData));
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973037
neteurt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cptngrb,
спасибо, только копирует в данном случае одно значение. Чтобы скопировать все нужно в цикле пройтись от 0 и до Length(pArrDbData) ?
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973038
neteurt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
2.
3.
4.
   for i := 0 to Length(pArrDbData) - 1 do
   begin
     Move(pArrDbData[i], test[i], Length(pArrDbData));
   end;
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973039
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neteurt, нет, move копирует память, а если ты хочешь пройтись циклом, то тоже можно но по другому

Код: pascal
1.
2.
3.
SetLength(test,Length(pArrDbData));
for i:=0 to Length(pArrDbData) -1 do
test[i]:= pArrDbData[i];
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973047
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
neteurt,

Код: pascal
1.
2.
SetLength(test,Length(pArrDbData));
Move(pArrDbData[0], test, Length(pArrDbData));

И трындец счетчикам ссылок.
Либо честно переприсвоить, либо архитектуру изменить чтобы операция вообще была не нужна.
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973075
iStrannik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Move для строк лучше не использовать.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function TForm.CheckDbData(pArrDbData: TArray<String>): boolean;
var
   test: TArray<String>;
   I: Integer;
begin
    for I := 0 to High(pArrDbData) do
     begin
          test[I] := pArrDbData[I];
     end;
end;
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973078
iStrannik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл перед for добавить SetLength(test, Length(pArrDbData));
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973085
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neteurt
Код: pascal
1.
array of String


Не проще объявить типом?
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973090
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iStrannik
Move для строк лучше не использовать.
Теоретически можно если потом счетчики ссылок подправить.
Практически - так себе решение, только для очень специфических случаев можно использовать.
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973254
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше изначально так не делать, чтоб потом по граблям не бегать
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973386
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neteurt
Подскажите как в test присвоить данные которые находятся в pArrDbData

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
type
  TStringArray = array of string;

function TForm.CheckDbData(pArrDbData: TStringArray): boolean;
var
   test: TStringArray;
begin
    test := pArrDbData;


cptngrb
Код: pascal
1.
Move(pArrDbData[0], test[0], Length(pArrDbData));


А если подумать?.. Что такое Length(pArrDbData) и сколько байт скопирует эта команда?
Ну и счётчики ссылок, да.
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973428
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp, после того, как написал, заметил, что string. Размер символа конечно нужно учитывать. Поэтому второй вариант написал
...
Рейтинг: 0 / 0
Incompatible types: 'Dynamic array' and 'array of
    #39973471
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
alekcvp, после того, как написал, заметил, что string. Размер символа конечно нужно учитывать. Поэтому второй вариант написал
Не размер символа, а размер элемента массива.
В данном случае, элемент массива - строка, указатель. Length(a) * sizeof( String ), что-то типа того.
Но и то это ужас. Будет крах с памятью скорее всего, ведь это молчаливое копирование указателей автоматического типа. Они могут уже освободиться, а ты их решишь использовать...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Incompatible types: 'Dynamic array' and 'array of
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]