powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / list index out of bounds
25 сообщений из 36, страница 1 из 2
list index out of bounds
    #39666618
elimpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите как исправить ошибку, возникает в этой строчке
Код: 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
list index out of bounds
    #39666623
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я конечно не специалист, но имхо, тут нужен программист...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
list index out of bounds
    #39666630
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion,

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

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

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

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

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

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

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

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

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

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

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

Ну не всеж эсквайрам изголятся :)
...
Рейтинг: 0 / 0
list index out of bounds
    #39666647
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийо! набежали ПРОГРАММИСТЫ...В Украине сегодня пятница
...
Рейтинг: 0 / 0
list index out of bounds
    #39666650
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я бы по-старинке
Код: 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
list index out of bounds
    #39666655
elimpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
с процедурой InitCheckComboBox. все нормально, она работает в других программах и никаких ошибок не возникает.
тут дело в этой строчке
Код: pascal
1.
 InitCheckComboBox(aApp, ccbDEV_PAYSYSTEM, shDEV_PAYSYSTEM.SQL.Text, GetCheckComboBoxValue(ccbDEV_PAYSYSTEM), [FContractKind]);


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

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

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

Которая, внимание, вызывает процедуру, с которой "все нормально"
...
Рейтинг: 0 / 0
list index out of bounds
    #39666687
elimpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
list index out of bounds
    #39666688
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion,

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

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

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

Повторюсь за DarkMaster - ищи точную строку...
...
Рейтинг: 0 / 0
list index out of bounds
    #39666696
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45А with это зло. :)
И на некоторые программы - явно зла не хватает.
...
Рейтинг: 0 / 0
list index out of bounds
    #39666709
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
list index out of bounds
    #39666737
elimpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
25 сообщений из 36, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / list index out of bounds
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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