Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / list index out of bounds / 25 сообщений из 36, страница 1 из 2
27.06.2018, 15:30
    #39666618
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
подскажите как исправить ошибку, возникает в этой строчке
Код: sql
1.
InitCheckComboBox(aApp, ccbDEV_PAYSYSTEM, shDEV_PAYSYSTEM.SQL.Text, GetCheckComboBoxValue(ccbDEV_PAYSYSTEM), [FContractKind]);


сам код программы
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
procedure TfrmEditDevice.InitCheckComboBox(App: TFuncApp; ctrl: TCheckedComboBox; aSql: string; aStr: string; const ParamArr: array of const);
var s: string;
    i: integer;
    bool: boolean;
    que: TOraQuery;
begin
  que := GetQueryBySQL(aSql, ParamArr);
  try
    with ctrl do begin
      Clear;
      with que do begin
        First;
        while not Eof do begin
          s := '';
          if (que.FieldCount = 3) then
            if Fields[2].asString <> '' then
              s := '['+Fields[2].asString+'] ';
          Items.Add(Fields[0].asString+' - '+s+Fields[1].asString);
          Next;
        end;
      end;
      for i := 1 to Items.Count do begin
        s := Trim(GetWord(1,Items[i-1],['-']));
        bool := IsWordPresent(s,aStr,[',']);
        Checked[i-1] := bool;
      end;
    end;
  finally
    que.Close;
    App.QI.FreeQuery(que);
  end;
end;




Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
type
    shDEV_PAYSYSTEM: TOraScript;
    ccbDEV_PAYSYSTEM: TCheckedComboBox;
...
var aApp:TFuncApp;
FContractKind: integer;
...
InitCheckComboBox(aApp, ccbDEV_PAYSYSTEM, shDEV_PAYSYSTEM.SQL.Text, GetCheckComboBoxValue(ccbDEV_PAYSYSTEM), [FContractKind]);
...
Рейтинг: 0 / 0
27.06.2018, 15:35
    #39666623
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
я конечно не специалист, но имхо, тут нужен программист...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.06.2018, 15:44
    #39666630
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
elimpion,

Либо в Fields меньше полей, чем ты думаешь, либо в Items. Но Fields у меня вызывает больше подозрений.

P.S. О назначении магических клавиш F7 и F8 и не менее магического заклинания "breakpoint АКА точка останова" ты догадываешься, но значения не придаешь?
...
Рейтинг: 0 / 0
27.06.2018, 15:44
    #39666632
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
elimpion,

В датасете только одно поле?

Или в OraQuery появилось свойство Items?

Ставлю на первое предположение
...
Рейтинг: 0 / 0
27.06.2018, 15:46
    #39666633
под ван
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
Вряд ли именно в этом дело, но после беглого чтения я бы для начала написал так:

Код: pascal
1.
for i := 1 to Items.Count -1
...
Рейтинг: 0 / 0
27.06.2018, 15:47
    #39666634
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
DarkMasterлибо в ItemsПо Items у него цикл. Но двойной with может преподнести свои сюрпризы
...
Рейтинг: 0 / 0
27.06.2018, 15:48
    #39666635
под ван
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
А ещё лучше так:

Код: pascal
1.
for i := 0 to Items.Count -1
...
Рейтинг: 0 / 0
27.06.2018, 15:48
    #39666636
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
_Vasilisk_,

В этом коде еще и не такое может быть :) Поменяют в SQL запросе поля местами - и привет... Очень заботливо грабельки разложены - заглядение просто.

P.S. With тоже доставляет... Спасибо хоть не WITH Object1,Object2,Object3 ....
...
Рейтинг: 0 / 0
27.06.2018, 15:48
    #39666639
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
под ваня бы для начала написал так:
Код: pascal
1.
for i := 1 to Items.Count -1

А я бы так не писал. Особенно если хотел бы перебрать все записи
...
Рейтинг: 0 / 0
27.06.2018, 15:49
    #39666641
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
под ван,

У него [i-1] при обращении к элементу, так что вроде норма. Но зачем делать на пустом месте еще одно вычисление - это уже не ко мне..
...
Рейтинг: 0 / 0
27.06.2018, 15:50
    #39666643
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
о! набежали ПРОГРАММИСТЫ...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.06.2018, 15:51
    #39666646
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
Мимопроходящий,

Ну не всеж эсквайрам изголятся :)
...
Рейтинг: 0 / 0
27.06.2018, 15:51
    #39666647
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
Мимопроходящийо! набежали ПРОГРАММИСТЫ...В Украине сегодня пятница
...
Рейтинг: 0 / 0
27.06.2018, 15:52
    #39666650
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
а я бы по-старинке
Код: pascal
1.
for i:=0 to Items.Count -1 do



тем более, что
elimpion
Код: sql
1.
2.
3.
        s := Trim(GetWord(1,Items[i-1],['-']));
        bool := IsWordPresent(s,aStr,[',']);
        Checked[i-1] := bool;




А with это зло. :)
...
Рейтинг: 0 / 0
27.06.2018, 15:54
    #39666655
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
с процедурой InitCheckComboBox. все нормально, она работает в других программах и никаких ошибок не возникает.
тут дело в этой строчке
Код: pascal
1.
 InitCheckComboBox(aApp, ccbDEV_PAYSYSTEM, shDEV_PAYSYSTEM.SQL.Text, GetCheckComboBoxValue(ccbDEV_PAYSYSTEM), [FContractKind]);


ошибка к ней ведет
...
Рейтинг: 0 / 0
27.06.2018, 15:59
    #39666660
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
elimpion,

F7...F7! ... F7 !!!!
...
Рейтинг: 0 / 0
27.06.2018, 16:00
    #39666665
zinpub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
elimpion,

А вот это что GetCheckComboBoxValue ? Код в смысле
...
Рейтинг: 0 / 0
27.06.2018, 16:01
    #39666667
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
elimpionс процедурой InitCheckComboBox. все нормально, она работает в других программах и никаких ошибок не возникает.
тут дело в этой строчке
Код: pascal
1.
 InitCheckComboBox(aApp, ccbDEV_PAYSYSTEM, shDEV_PAYSYSTEM.SQL.Text, GetCheckComboBoxValue(ccbDEV_PAYSYSTEM), [FContractKind]);

Которая, внимание, вызывает процедуру, с которой "все нормально"
...
Рейтинг: 0 / 0
27.06.2018, 16:21
    #39666687
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
zinpubelimpion,

А вот это что GetCheckComboBoxValue ? Код в смысле

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function GetCheckComboBoxValue(ctrl: TCheckedComboBox): string;
var aStr : string;
    i    : integer;
begin
  aStr := '';
  result := '';
  with ctrl do begin
    for i := 1 to Items.Count do begin
      if Checked[i-1] then
        aStr := aStr + Trim(GetWord(1,Items[i-1],['-']))+',';
    end;
  end;
  if aStr <> '' then
    delete(aStr,Length(aStr),1);
  result := aStr;
end;
...
Рейтинг: 0 / 0
27.06.2018, 16:23
    #39666688
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
elimpion,

Функция у тебя что, всегда пустую строку возвращает?-))))
...
Рейтинг: 0 / 0
27.06.2018, 16:24
    #39666689
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
DarkMaster,

А нет, поправка, там последний символ только удаляется. Недосмотрел.
...
Рейтинг: 0 / 0
27.06.2018, 16:27
    #39666693
zinpub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
elimpion,

Ндя... тяжко так.

Повторюсь за DarkMaster - ищи точную строку...
...
Рейтинг: 0 / 0
27.06.2018, 16:30
    #39666696
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
goldmi45А with это зло. :)
И на некоторые программы - явно зла не хватает.
...
Рейтинг: 0 / 0
27.06.2018, 16:50
    #39666709
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
elimpion,

Ужос.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function GetCheckComboBoxValue(ctrl: TCheckedComboBox): string;
var 
    i: integer;
begin
  result := '';
  if not Assigned(ctrl) then
    Exit;
  for i := 0 to ctrl.Items.Count - 1 do 
      if ctrl.Checked[i] then
      begin
        if Result <> '' then
          Result := Result + ',';
        Result := Result + Trim(GetWord(1, ctrl.Items[i], ['-']));
      end;
  end;
end;



С TCheckedComboBox незнаком. С GetWord тоже.
...
Рейтинг: 0 / 0
27.06.2018, 17:29
    #39666737
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list index out of bounds
goldmi45elimpion,

Ужос.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function GetCheckComboBoxValue(ctrl: TCheckedComboBox): string;
var 
    i: integer;
begin
  result := '';
  if not Assigned(ctrl) then
    Exit;
  for i := 0 to ctrl.Items.Count - 1 do 
      if ctrl.Checked[i] then
      begin
        if Result <> '' then
          Result := Result + ',';
        Result := Result + Trim(GetWord(1, ctrl.Items[i], ['-']));
      end;
  end;
end;



С TCheckedComboBox незнаком. С GetWord тоже.
не помогло, ошибка та же осталась.
провел трассировку ошибка выбивает тут
Код: pascal
1.
InitCheckComboBox(aApp, ccbDEV_PAYSYSTEM, shDEV_PAYSYSTEM.SQL.Text, GetCheckComboBoxValue(ccbDEV_PAYSYSTEM), [FContractKind]);


и тут
Код: pascal
1.
  que := GetQueryBySQL(aSql, ParamArr);
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / list index out of bounds / 25 сообщений из 36, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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