Регистрация
Регистрация Поиск Сообщество  
CGM > Всякая всячина > Поговорим за жизнь
Опции темы

HELP!!! Вопрос по Делфи и ехсел файле.

Важные объявления
Старый 25.07.2006, 00:26     TS Старый   #21 (permalink)
Бессмертный
 
Аватар для CLON
 
Регистрация: 09.02.2005
Адрес: ex-CCCP
Сообщений: 3,436
Да нет. Стоит Ехсел2000. Компоненты офиса 2000 тоже стоят.

Делфи знаю нормально (решал все задачи, которые требовалось решить), но с ОЛЕ никогда прежде не работал. Просто сейчас не когда разбираться. 8-)

И тем более я не программист.
__________________
Dr.Sc.Ing.
CLON

Здесь могла бы быть реклама полезных программ для рулетки, но она запрещенна ЦЕНЗУРОЙ форума CGM.ru :(
CLON вне форума      
Старый 25.07.2006, 00:34   #22 (permalink)
Участник
 
Регистрация: 23.10.2004
Сообщений: 101
Аналогичная ошибка - у меня Office 2003
Если завтра на работе найду - то тоже кину пример работы с excel...
А вообще посмотри в и-нете, например через Яндекс что-нить типа: "работа с excel в delphi" или т.п.
Shadow вне форума      
Старый 25.07.2006, 00:46   #23 (permalink)
Ветеран
 
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
Ну не знаю Откомпилированный рабочий пример на предыдущей странице.

Кстати, какая версия Delphi? У меня Delphi Enterprise v.6.0 (6.240) Update Pack 2.0. Короче 2 сервис-пака включая RTL пак.

__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883
Sharky вне форума      
Старый 25.07.2006, 00:51   #24 (permalink)
Ветеран
 
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
Если версия Delphi ниже чем у меня, поставьте апдейты.Если версия старше чем у меня, тут уж нужно разбираться будет.
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883
Sharky вне форума      
Старый 25.07.2006, 00:51   #25 (permalink)
Участник
 
Регистрация: 23.10.2004
Сообщений: 101
Delphi 7
Вот чего у меня выдает
Изображения
 
Shadow вне форума      
Старый 25.07.2006, 00:52     TS Старый   #26 (permalink)
Бессмертный
 
Аватар для CLON
 
Регистрация: 09.02.2005
Адрес: ex-CCCP
Сообщений: 3,436
У меня:

Delphi v.7.0 (Build 4.453)

да кстати, кто нибудь в новом в 7ю0 Делфи отчеты пробовал делать. Блин КвикРепорт - пропал, а в место него появилась какая-то хрень - rave report 5.0.

Выглядит прикольно, но разбираться тоже не стал. Нет сил.
__________________
Dr.Sc.Ing.
CLON

Здесь могла бы быть реклама полезных программ для рулетки, но она запрещенна ЦЕНЗУРОЙ форума CGM.ru :(
CLON вне форума      
Старый 25.07.2006, 00:56   #27 (permalink)
Ветеран
 
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
Мде, вот и обратная совместимость... Короче лезем в хелп, и смотрим что там используется вместо Range в 7 версии..
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883
Sharky вне форума      
Старый 25.07.2006, 00:58   #28 (permalink)
Участник
 
Регистрация: 23.10.2004
Сообщений: 101
Аналогично (Build 4.453)

Видно и компонент что Sharky использует изменили ... :?
Shadow вне форума      
Старый 25.07.2006, 04:19   #29 (permalink)
Ветеран
 
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
Вот сделал тебе другой пример. Доступ к книге как к базе данных...
Херня в том, что ты не будешь знать названия листов, а доступ к данным можно получить только если знать имя нужного листа. Поэтому сначала открываю схему книги и получаю названия первого листа, а потом уже считываю данные из него. В примере данные берутся только из первой колонки первого листа и помещаются в Memo (для наглядности).. Что непонятно будет спрашивай. 8-)

Код:
// Sample by Sharky
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    function ImportFromExcel(FileName: string): Boolean;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses ADODB, ComObj;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
    ImportFromExcel(OpenDialog1.FileName);
end;

function TForm1.ImportFromExcel(FileName: string): Boolean;
const
  adOpenStatic = 3;
  adSchemaTables = 20;
var
  Connection, RecordSet, V: Variant;
  DSN, FirstSheet: string;

begin
  Result := False;
  DSN := Format('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties="Excel 8.0;HDR=Yes;";', [Filename]);
  Connection := CreateOleObject('ADODB.Connection');
  if VarIsNull(Connection) then
    Exit;
  Connection.Open(DSN);

  RecordSet := Connection.OpenSchema(
    adSchemaTables,
    VarArrayOf([Unassigned, Unassigned, Unassigned, 'TABLE']),
    EmptyParam
  );

  if not RecordSet.EOF then
  begin
    V := RecordSet.Fields.Item('TABLE_NAME').Value;
    FirstSheet := VarToStr(V);
    RecordSet.Close;

    RecordSet := CreateOleObject('ADODB.RecordSet');
    RecordSet.Open(Format('select * from [%s]', [FirstSheet]), Connection, adOpenStatic);
    while not RecordSet.EOF do
    begin
      V := RecordSet.Fields.Item(0).Value;
      Memo1.Lines.Add( VarToStr(V) );
      RecordSet.Move(1);
    end;
    Result := True;
  end;

  RecordSet.Close;
  Connection.Close;
  RecordSet := False;
  Connection := False;
end;

end.
Вложения
Тип файла: rar Excel2.rar (5.8 Кб, 38 просмотров)
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883
Sharky вне форума      
Старый 28.07.2006, 21:56     TS Старый   #30 (permalink)
Бессмертный
 
Аватар для CLON
 
Регистрация: 09.02.2005
Адрес: ex-CCCP
Сообщений: 3,436
Sharky, посмотрел файлы и откомпелировал прогу. Все работает.

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

Да посмотрел текс программы. Я такого никогда раньше не делал, но в общем смысл действий понятен. Почти так же работаю с БД.

Спасибо.

ЗЫ: Ловлю тебя на слове, если будут вопросы обязательно спрошу.
__________________
Dr.Sc.Ing.
CLON

Здесь могла бы быть реклама полезных программ для рулетки, но она запрещенна ЦЕНЗУРОЙ форума CGM.ru :(
CLON вне форума      
Старый 25.11.2006, 13:01     TS Старый   #31 (permalink)
Бессмертный
 
Аватар для CLON
 
Регистрация: 09.02.2005
Адрес: ex-CCCP
Сообщений: 3,436
Требуется ускорить работу алгоритма в Делфи 7.0.

Можно ли посмотреть время выполнения отдельных процедур и функций в процессе выполнения программы, т.к. установить таймеры на все опрации не представляется возможным (слишком гимморойно).

С уважением
СLON

ЗЫ: делал тестовую процедуру по тестированию отдельных функций и процедур, на 1 000 000 циклов, но может быть есть более простой путь.
__________________
Dr.Sc.Ing.
CLON

Здесь могла бы быть реклама полезных программ для рулетки, но она запрещенна ЦЕНЗУРОЙ форума CGM.ru :(
CLON вне форума      
Старый 30.11.2006, 01:52   #32 (permalink)
Бессмертный
 
Регистрация: 08.02.2006
Адрес: Москва
Сообщений: 12,352
CLON
Я такого способа не знаю.

А зачем ставить таймеры на все операции? Находишь самые "долгие" операции (можно даже методом деления пополам, но обычно кандидаты и так видны) и пытаешься их оптимизировать.

Проще всего написать класс и использовать потом примерно так:
Timer timer1 = new Timer();
timer1.Start();
timer1.Stop();
Console.WriteLine timer1.Interval;

Причём, удобнее эти строки писать внутри тэгов условной компиляции, чтобы можно было включать/выключать использование таймера, задав параметр компиилятору.
__________________
Моё мнение здесь для того, чтобы узнать, почему оно неправильное.
CorwinXX вне форума      
Старый 30.11.2006, 09:51     TS Старый   #33 (permalink)
Бессмертный
 
Аватар для CLON
 
Регистрация: 09.02.2005
Адрес: ex-CCCP
Сообщений: 3,436
Цитата:
Сообщение от CorwinXX писал чт, 30 ноября 2006 01:52
CLON
Я такого способа не знаю.

А зачем ставить таймеры на все операции? Находишь самые "долгие" операции (можно даже методом деления пополам, но обычно кандидаты и так видны) и пытаешься их оптимизировать.

Проще всего написать класс и использовать потом примерно так:
Timer timer1 = new Timer();
timer1.Start();
timer1.Stop();
Console.WriteLine timer1.Interval;

Причём, удобнее эти строки писать внутри тэгов условной компиляции, чтобы можно было включать/выключать использование таймера, задав параметр компиилятору.
Спасибо, именно так и мучаюсь с таймерами.

ЗЫ: Маринер, писал про профайлер - это не из этой оперы?
__________________
Dr.Sc.Ing.
CLON

Здесь могла бы быть реклама полезных программ для рулетки, но она запрещенна ЦЕНЗУРОЙ форума CGM.ru :(
CLON вне форума      
Старый 30.11.2006, 14:20   #34 (permalink)
Ветеран
 
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
Clon, если знаешь Perl или СИ, то глянь как это делается:
[Зарегистрироваться?] .shtml
Писал когда-то что-то похожее, но вот найти не могу..
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883
Sharky вне форума      

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дурацкий вопрос вопрос от слегка начинающего alexstunning Limit Holdem, Omaha, 7-Card Stud и другие виды покера 22 01.07.2009 01:09
Вопрос, опять вопрос pr3dat0r Безлимитный холдем микро бай-инов 17 08.06.2006 23:00



Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.

Быстрый переход
Правила форумов CGM Контакты Справка Обратная связь CGM.ru Архив Вверх Главная
 
Использование материалов сайта разрешено только при наличии активной ссылки на источник.
Все права на картинки и тексты принадлежат Информационному агентству CGM и их ПАРТНЕРАМ. Политика конфидециальности
CGM.ru на Youtube CGM.ru на Google+ CGM.ru в Twitter CGM.ru на Facebook CGM.ru в vKontakte CGM.ru в Instagram

В сотрудничестве с Pokeroff.ru
Текущее время: 18:17. Часовой пояс GMT +3.
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot