Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi2009, Excel и пример из букваря, Undeclared identifier 
:(
    Опции темы
skeef
Дата 20.3.2010, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Вот собственно код (частично) который адаптирую для 2009-го из Delphi7:
Код

unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ToolWin, ComCtrls, ImgList, Dislocation, IniFiles, func,
  StdCtrls, ExtCtrls, Buttons, OleServer, ExcelXP, pngimage, ComObj, RegExpr;

type
  TfrmMain = class(TForm)
    mmMain: TMainMenu;
   (...)
    procedure ...
   (...)

  end;

const
  slh = '\';
  filMem = 'Memories.xlsx';          // это имя Excel фала
  shnCat = 'Категорії';               // это названия листов
  shnStrType = 'Тип вулиць';
  shnStr = 'Вулиці';

var
  frmMain: TfrmMain;
  dirMain, dirCfg, iRegion, iRegText, iOkrug, xlFile, newRow: string;
  ini: TIniFile;
  Ex,                                                   // Переменная для объекта Excel.Application
  shCat, shStrType, shStr: Variant;   // Переменные для листов Excel`я

implementation

{$R *.dfm}

procedure TfrmMain.FormCreate(Sender: TObject);
var
  mCell, tmpA, tmpB: string;
  mRow: Integer;
  i: byte;

begin
  GetDir(0, dirMain); { текущий каталог }

  dirMain := dirMain + slh;
  dirCfg := dirMain + 'cfg' + slh;

  Ex := CreateOleObject('Excel.Application');
  Ex.DisplayAlerts := false;

//    Ex.Visible := true;
  Ex.Visible := false;

  if FileExists(dirCfg + filMem) then
  begin
    Ex.WorkBooks.Open(dirCfg + filMem);
    for i := 1 to Ex.Sheets.Count do
    begin
      if Ex.Sheets.Item[i].Name = shnCat then
        shCat := Ex.Sheets.Item[i]
     else if Ex.Sheets.Item[i].Name = shnStrType then
        shStrType := Ex.Sheets.Item[i]
      else if Ex.Sheets.Item[i].Name = shnStr then
        shStr := Ex.Sheets.Item[i];
    end;

   (...)



Пишет ошибку: "Undeclared identifier 'Name' " в строках  if Ex.Sheets.Item[i].Name = ... 
Зачем его надо декларировать? Что где не так?
Код написан по аналогии из умной книжки: "ПРОГРАММИРОВАНИЕ ДОКУМЕНТОВ И ПРИЛОЖЕНИЙ MS OFFICE в DELPHI" 

Вторые сутки рою инет - мозк кипит. Гугл скоро ржать буйт от извращенности поисковой строки smile
Заранее благодарствую всем кто откликнется


Это сообщение отредактировал(а) skeef - 20.3.2010, 11:14
PM MAIL   Вверх
volvo877
Дата 20.3.2010, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 9
Всего: 116



Цитата(skeef @  20.3.2010,  10:11 Найти цитируемый пост)
Пишет ошибку: "Undeclared identifier 'Name' " в строках  if Ex.Sheets.Item[i].Name = ... 

Это где тебе Д2009 такую ошибку пишет? Слева вверху, в окошке "Structure" что-ли? А ты F9 нажать и откомпилировать пробовал? Попробуй, и посмотри, что тебе компилятор сообщит в окне "Messages" smile

Все, что Дельфи тебе показывает - это "Я не знаю, что у Variant-а есть поле Name, может оно и есть, но мне об этом не известно". Такое же предупреждение должно выдаваться и для Select, и для Range, и для Worksheets. Правда?
PM MAIL   Вверх
skeef
Дата 20.3.2010, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



От оно че! Спасибо тебе, добрый человек smile
Сами мы новенькие ... так шо не обессутьте ...

Код то работает, но блин! Должно ж быть все правильно smile 
Я б не дергался еслиб оно было Warning, но ведь Error и красное такое - страшно аж ;))

Т.е. просто не обращать внимания? А если вырубить (кстати можно ли?) я много потеряю при отладке?


Это сообщение отредактировал(а) skeef - 20.3.2010, 15:23
PM MAIL   Вверх
volvo877
Дата 20.3.2010, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 9
Всего: 116



Цитата(skeef @  20.3.2010,  14:21 Найти цитируемый пост)
А если вырубить (кстати можно ли?) я много потеряю при отладке?
Tools -> Options -> Code Insight -> (снять галку) Error Insight, и перезагрузить проект.

Отладка здесь не при делах, ты просто перестанешь получать сообщения об ошибках в окно Structure, а будешь видеть их только при компиляции проекта.

Это давно известная проблема, еще с D2007: https://forums.codegear.com/thread.jspa?messageID=134881
И в D2010 Error Insight тоже не идеален: https://forums.codegear.com/thread.jspa?thr...28&tstart=0
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0731 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.