Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 AV in array of string[]  [new]
Hug
Member

Откуда: Екатеринбург
Сообщений: 520
Всем добрый день. Убираю warning из legacy код и вот с чем столкнулся. Получаю AV при присвоении элементу массива

class function TGuiHelper.Test: string;
begin
   Result:='';
end;

class procedure TGuiHelper.F1();
var
    array: array[1..24] of string;
begin
    array[1]:=Test();  ---- AV in procedure _UStrClr(var S);
end;


причем если было как раньше
array: array[1..24] of string[5];
- то никакого av нет

Как можно объяснить такое поведение?
12 май 19, 16:38    [21882794]     Ответить | Цитировать Сообщить модератору
 Re: AV in array of string[]  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47373

Hug
Как можно объяснить такое поведение?

Очевидно в твоей версии компилятора есть баг с инициализацией локальных переменных
строкового типа.

Posted via ActualForum NNTP Server 1.5

12 май 19, 16:44    [21882800]     Ответить | Цитировать Сообщить модератору
 Re: AV in array of string[]  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3469
Hug
Как можно объяснить такое поведение?

А перед строчкой вызывающей исключение есть какая-либо работа с этим массивом?
12 май 19, 16:48    [21882807]     Ответить | Цитировать Сообщить модератору
 Re: AV in array of string[]  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47373

Hug
Убираю warning из legacy код

Какой, кстати, warning? У меня этот код даёт жёсткий error из-за использования
зарезервированного слова в качестве идентификатора.

Posted via ActualForum NNTP Server 1.5

12 май 19, 16:51    [21882809]     Ответить | Цитировать Сообщить модератору
 Re: AV in array of string[]  [new]
Hug
Member

Откуда: Екатеринбург
Сообщений: 520
Dimitry Sibiryakov
Hug
Убираю warning из legacy код

Какой, кстати, warning? У меня этот код даёт жёсткий error из-за использования
зарезервированного слова в качестве идентификатора.


Я извиняюсь, естестсвенно имя массива - другое
12 май 19, 17:01    [21882813]     Ответить | Цитировать Сообщить модератору
 Re: AV in array of string[]  [new]
Hug
Member

Откуда: Екатеринбург
Сообщений: 520
Kazantsev Alexey
Hug
Как можно объяснить такое поведение?

А перед строчкой вызывающей исключение есть какая-либо работа с этим массивом?


нету
12 май 19, 17:01    [21882814]     Ответить | Цитировать Сообщить модератору
 Re: AV in array of string[]  [new]
Hug
Member

Откуда: Екатеринбург
Сообщений: 520
Dimitry Sibiryakov
Hug
Убираю warning из legacy код

Какой, кстати, warning? У меня этот код даёт жёсткий error из-за использования
зарезервированного слова в качестве идентификатора.


[dcc32 Warning] хххх.pas(2747): W1058 Implicit string cast with potential data loss from 'string' to 'ShortString'
12 май 19, 17:04    [21882815]     Ответить | Цитировать Сообщить модератору
 Re: AV in array of string[]  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3469
Hug
нету

Другие локальные переменные перед этим массивом с которыми ведётся работа? Просто ситуация похожа на затирание массива чем-то. Можно в отладчике посмотреть содержимое массива сразу после входа в процедуру и непосредственно перед операцией присваивания.
12 май 19, 18:06    [21882832]     Ответить | Цитировать Сообщить модератору
 Re: AV in array of string[]  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3469
Hug
[dcc32 Warning] хххх.pas(2747): W1058 Implicit string cast with potential data loss from 'string' to 'ShortString'

Кстати, чтобы от этого варнинга избавиться, достаточно сделать явное приведение типа при присваивании:
arr[1] := ShortString(Test());
12 май 19, 18:34    [21882842]     Ответить | Цитировать Сообщить модератору
 Re: AV in array of string[]  [new]
Cobalt747
Member

Откуда:
Сообщений: 2085
Hug,
Извини, Марио, но твой баг где-то в другом месте.
В обычном приложении всё ок, ошибок нет.

К сообщению приложен файл. Размер - 96Kb
13 май 19, 21:03    [21883800]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить