Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не определяет функцию / 25 сообщений из 29, страница 1 из 2
05.07.2018, 13:02
    #39669990
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
не определяет функцию, функция прописана в том же файле, что не так?
Код: pascal
1.
2.
3.
4.
                              if (p is TCheckedComboBox) then begin
                                if (p as TCheckedComboBox).EmptyValue <> '' then
                                  FLD.GetCheckComboBoxValue([Mask+Copy(p.Name,3,Length(p.Name))],(p as TCheckedComboBox).EmptyValue);
                            end;



Код: pascal
1.
[Error]  Undeclared identifier: 'GetCheckComboBoxValue'


Код: pascal
1.
2.
3.
4.
5.
uses
...
  function GetCheckComboBoxValue(ctrl: TCheckedComboBox): string;
...
implementation
...
Рейтинг: 0 / 0
05.07.2018, 13:04
    #39669991
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure FillFldByCompontents(aForm: TForm; FLD: TVars; Mask:string);
var
  i,j : Integer;
  p : TComponent;

begin
  with aForm do
    for i := 0 to ComponentCount-1 do begin
      p := Components[i];
      if (p is TCheckedComboBox) then begin
      if (p as TCheckedComboBox).EmptyValue <> '' then
      FLD.GetCheckComboBoxValue([Mask+Copy(p.Name,3,Length(p.Name))],(p as TCheckedComboBox).EmptyValue);
      end;
    end;
end;
...
Рейтинг: 0 / 0
05.07.2018, 13:07
    #39669993
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
elimpion,

GetCheckComboBoxValue описана в модуле или у класса?
Код: pascal
1.
FLD.GetCheckComboBoxValue // Что за класс имеет переменная FLD? И есть ли у неё public метод GetCheckComboBoxValue
...
Рейтинг: 0 / 0
05.07.2018, 13:15
    #39670001
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
вот её описание
Код: 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.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
unit BrsDevInfra_FUtils;

interface
uses
  {$IFDEF UNICODE}
  Variants,
  {$ENDIF}
  API_UFuncApp,
  RxLookup,
  API_uQIService,
  API_UEdAccOrClientTools,
  SYS_UVAR,
  SYS_uStr,
  SYS_UQIntAbstr,
  SYS_uCRC32,
  SYS_uMsg,
  SYSLIB_UQIServ,
  SYS_uSessMan,
  API_FDBPassword,
  CheckCombo,
  EXP_uDlgDBPick,
  Windows, Messages, SysUtils, OraScript, Ora, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, DB, mask, CurrEdit, ToolEdit, ExtCtrls, CheckLst, TB2Item,
  frxVariables,
  BrsApi_Odac,RxDBComb;

  procedure FillFldByCompontents(aForm: TForm; FLD: TVars; Mask:string);
  procedure FillCompontentsByFld(aForm: TForm; FLD: TVars; Mask:string);
  procedure Str2Params(const aStr, aSectName : string; out aParams : TVars);
  function Params2Str(const varsFld : TVars; SectName: string = ''): String;
  procedure SetupStatusModesButton(
                           App : TFuncApp;
                           tbSubModes : TTBSubmenuItem;
                           tbiModeClick : TNotifyEvent;
                           aRef : string);
  function nvl(aValue: string; aDefault: string): string;
  function CheckControl(p: TComponent; isWarning: boolean):boolean;
  procedure SetDefaultComboValues(aForm: TForm;aFormTuneKind:integer;FLD: TVars);
  function GetCheckComboBoxValue(ctrl: TCheckedComboBox): string;

implementation

function CheckControl(p: TComponent; isWarning: boolean):boolean;
...
Рейтинг: 0 / 0
05.07.2018, 13:16
    #39670002
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
Код: pascal
1.
      FLD.GetCheckComboBoxValue([Mask+Copy(p.Name,3,Length(p.Name))],(p as TCheckedComboBox).EmptyValue);


если удалить FLD то функция определяется
...
Рейтинг: 0 / 0
05.07.2018, 13:21
    #39670005
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
elimpion
Код: pascal
1.
      FLD.GetCheckComboBoxValue([Mask+Copy(p.Name,3,Length(p.Name))],(p as TCheckedComboBox).EmptyValue);


если удалить FLD то функция определяется

Логично, правда?

MyUNIT.FunctionName() - берет функцию из конкретного модуля.
MyCLASS.FunctionName() - берет функцию/метод из класса/обьекта/record
FunctionName() - берет функцию из текущего модуля, если она есть, или из модулей, которые в Uses.
...
Рейтинг: 0 / 0
05.07.2018, 13:28
    #39670010
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
DarkMaster,
так функция в uses объявлена, но она не определяется
...
Рейтинг: 0 / 0
05.07.2018, 13:31
    #39670014
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
elimpion,

Ну а зачем ты вместо того, чтобы использовать функцию, которая у тебя в модуле, пытаешься использовать функцию, которая, как ты думаешь, принадлежит какому-то классу?
...
Рейтинг: 0 / 0
05.07.2018, 13:39
    #39670020
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
DarkMaster,

так я и хочу использовать функцию которая в модуле прописана, класс же даже нигде не объявлен
...
Рейтинг: 0 / 0
05.07.2018, 13:45
    #39670026
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
elimpion,

FLD - у тебя TVars. Твой GetCheckBlaBla() принимает TCheckedComboBox. Ты же пытается вызывать у TVars метод GetCheck...., которого нет (наверное), и запихать в этот метод что-то вообще несуразное.

Наиболее логичным будет что-то вроде:
Код: pascal
1.
2.
3.
4.
    if (p is TCheckedComboBox) then
         begin
            GetCheckComboBoxValue( p as TCheckedComboBox );
         end;


А твои попытки впихнуть невпихуемое - от лукавого в общем...
...
Рейтинг: 0 / 0
05.07.2018, 13:46
    #39670028
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
elimpionDarkMaster,
так функция в uses объявлена, но она не определяется
Функция не объявляется в uses. В Uses объявляются модули, которые использует данный модуль.
У модуля имеется две секции: интерфейсная часть (interface) и реализация (implementation).
Функции могут не быть описаны в интерфейсе, но иметь реализацию. Если функция описывается в интерфейсе модуля, то к этой функции можно обратиться из другого модуля, предварительно добавив этот модуль в список используемых (uses).

ЗЫ: С кашей в голове не удастся научиться программированию.
...
Рейтинг: 0 / 0
05.07.2018, 14:33
    #39670054
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
elimpion,

хочешь использовать функцию - используй, зачем ты FLD добавляешь? у класса TVars нет функции GetCheckComboBoxValue, даже компилятор в этом разобрался :)
...
Рейтинг: 0 / 0
05.07.2018, 14:41
    #39670062
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
DarkMaster,

вот смотрите, этот код из той же процедуры что и TCheckedComboBox,
Код: pascal
1.
2.
3.
4.
                            if (p is TComboBox) then begin
                               if (p as TComboBox).Text <> '' then
                                 FLD.PutVal([Mask+Copy(p.Name,3,Length(p.Name))],(p as TComboBox).Text);
                            end


PutVal объявлен в модуле SYS_UVar, и никаких ошибок при работе не возникает.
Я побывал объявить GetCheckComboBoxValue там же. Но у меня возникла ошибка.
...
Рейтинг: 0 / 0
05.07.2018, 14:43
    #39670067
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
elimpionесли удалить FLD то функция определяется
Мне кажется, я понял, что ты хочешь.

замени
Код: pascal
1.
FLD.GetCheckComboBoxValue

на
Код: pascal
1.
BrsDevInfra_FUtils.GetCheckComboBoxValue
...
Рейтинг: 0 / 0
05.07.2018, 14:46
    #39670069
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
YuRockМне кажется, я понял, что ты хочешь
Ааа, нет

elimpionPutVal объявлен в модуле SYS_UVar, и никаких ошибок при работе не возникает
PutVal есть у класса TVars, вот почему тут нет ошибок.
...
Рейтинг: 0 / 0
05.07.2018, 14:46
    #39670070
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
elimpionDarkMaster,
Код: pascal
1.
2.
3.
4.
                            if (p is TComboBox) then begin
                               if (p as TComboBox).Text <> '' then
                                 FLD.PutVal([Mask+Copy(p.Name,3,Length(p.Name))],(p as TComboBox).Text);
                            end


PutVal объявлен в модуле SYS_UVar, и никаких ошибок при работе не возникает.
Я побывал объявить GetCheckComboBoxValue там же. Но у меня возникла ошибка.
Может, PutVal и объявлен в модуле SYS_UVar, но используется метод у переменной FLD: TVars.

У класса TVars есть метод PutVal?
...
Рейтинг: 0 / 0
05.07.2018, 14:46
    #39670071
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
elimpionDarkMaster,

вот смотрите, этот код из той же процедуры что и TCheckedComboBox,
Код: pascal
1.
2.
3.
4.
                            if (p is TComboBox) then begin
                               if (p as TComboBox).Text <> '' then
                                 FLD.PutVal([Mask+Copy(p.Name,3,Length(p.Name))],(p as TComboBox).Text);
                            end


PutVal объявлен в модуле SYS_UVar, и никаких ошибок при работе не возникает.
Я побывал объявить GetCheckComboBoxValue там же. Но у меня возникла ошибка.

Ты что-то такое хочешь получить?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
            
 var StrComboValue:string;
 // .... 
 if (p is TCheckComboBox) then begin
    begin
        StrComboValue:=GetCheckComboBoxValue(p as TCheckComboBox);
        if  StrComboValue<> '' then   // 
            FLD.PutVal([Mask+Copy(p.Name,3,Length(p.Name))], StrComboValue);
    end



Бяда-бяда с безумным копипастом :(
...
Рейтинг: 0 / 0
05.07.2018, 14:50
    #39670079
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
goldmi45elimpionDarkMaster,
Код: pascal
1.
2.
3.
4.
                            if (p is TComboBox) then begin
                               if (p as TComboBox).Text <> '' then
                                 FLD.PutVal([Mask+Copy(p.Name,3,Length(p.Name))],(p as TComboBox).Text);
                            end


PutVal объявлен в модуле SYS_UVar, и никаких ошибок при работе не возникает.
Я побывал объявить GetCheckComboBoxValue там же. Но у меня возникла ошибка.
Может, PutVal и объявлен в модуле SYS_UVar, но используется метод у переменной FLD: TVars.

У класса TVars есть метод PutVal?
есть.
...
Рейтинг: 0 / 0
05.07.2018, 14:50
    #39670080
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
DarkMaster,

достает данные из fld и отображает из на форме
...
Рейтинг: 0 / 0
05.07.2018, 14:59
    #39670087
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
elimpionDarkMaster,

достает данные из fld и отображает из на форме

Как достает, куда достает? Давай попробуем на пальцах:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
   // засунем в FLD: TVars  все значения, собранные с формы
   for i:=0 to Pred(AForm.ComponentCount) do
        begin
            //........
           if (Components[i] is .....) then
               begin
                   StringForPut:= GetControlXXXXValue (Components[i] as .....);
                   FLD.PutVal( _Name_, StringForPut);
               end;
            //.... 
        end;

   // теперь нам нужно где-то отобразить то, что мы насобирали
   for i:=0 to Pred(FLD.Count) do
        Memo.Lines.Add(FLD.GetValue(_NAME_));


Так?
...
Рейтинг: 0 / 0
05.07.2018, 15:19
    #39670101
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
DarkMaster,

Код: 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.
33.
34.
35.
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 = 6) 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;
...
InitCheckComboBox(aApp, ccbDEV_PAYSYSTEM, shDEV_PAYSYSTEM.SQL.Text, GetCheckComboBoxValue(ccbDEV_PAYSYSTEM), []);
...


для записи этот использую, а чтобы отобразить тот что выше
...
Рейтинг: 0 / 0
05.07.2018, 15:32
    #39670115
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
elimpion,

Все, мой хрустальный шар запотел, а телепатометр - вообще взорвался от перегрева... Я окончательно перестал понимать, что и для чего используешь и что хочешь в конце-концов получить.
...
Рейтинг: 0 / 0
05.07.2018, 15:40
    #39670120
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
elimpionDarkMaster,
так функция в uses объявлена , но она не определяетсяМммм, что то новое
...
Рейтинг: 0 / 0
05.07.2018, 15:44
    #39670128
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
asutp2ИдиУчиМатЧасть...
Следующий вопрос у ТСа будет, где найти этот модуль :)
...
Рейтинг: 0 / 0
05.07.2018, 15:51
    #39670138
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не определяет функцию
goldmi45,

Код: pascal
1.
2.
3.
                            if (p is TCheckedComboBox) then
                            StrComboValue:=GetCheckComboBoxValue(p as TCheckedComboBox);
                            (p as TCheckedComboBox).EmptyValue := FLD.GetValDef([StrComboValue],'')




при выполнение кода возникла ошибка invalid class typecast, что не так?
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не определяет функцию / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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