|
| ||||
|
| ||||
|
Важные объявления
|
|
|
|
|
#21 (permalink) |
|
Бессмертный
Регистрация: 09.02.2005
Адрес: ex-CCCP
Сообщений: 3,436
|
Да нет. Стоит Ехсел2000. Компоненты офиса 2000 тоже стоят.
Делфи знаю нормально (решал все задачи, которые требовалось решить), но с ОЛЕ никогда прежде не работал. Просто сейчас не когда разбираться. 8-) И тем более я не программист.
__________________
Dr.Sc.Ing. CLON Здесь могла бы быть реклама полезных программ для рулетки, но она запрещенна ЦЕНЗУРОЙ форума CGM.ru :( |
|
|
0
|
|
|
#23 (permalink) |
|
Ветеран
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
|
Ну не знаю
Откомпилированный рабочий пример на предыдущей странице.Кстати, какая версия Delphi? У меня Delphi Enterprise v.6.0 (6.240) Update Pack 2.0. Короче 2 сервис-пака включая RTL пак.
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883 |
|
|
0
|
|
|
#24 (permalink) |
|
Ветеран
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
|
Если версия Delphi ниже чем у меня, поставьте апдейты.Если версия старше чем у меня, тут уж нужно разбираться будет.
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883 |
|
|
0
|
|
|
#26 (permalink) |
|
Бессмертный
Регистрация: 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 :( |
|
|
0
|
|
|
#27 (permalink) |
|
Ветеран
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
|
Мде, вот и обратная совместимость... Короче лезем в хелп, и смотрим что там используется вместо Range в 7 версии..
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883 |
|
|
0
|
|
|
#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.
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883 |
|
|
0
|
|
|
#30 (permalink) |
|
Бессмертный
Регистрация: 09.02.2005
Адрес: ex-CCCP
Сообщений: 3,436
|
Sharky, посмотрел файлы и откомпелировал прогу. Все работает.
Проблемма действительно была в компоненте. Да посмотрел текс программы. Я такого никогда раньше не делал, но в общем смысл действий понятен. Почти так же работаю с БД. Спасибо. ЗЫ: Ловлю тебя на слове, если будут вопросы обязательно спрошу.
__________________
Dr.Sc.Ing. CLON Здесь могла бы быть реклама полезных программ для рулетки, но она запрещенна ЦЕНЗУРОЙ форума CGM.ru :( |
|
|
0
|
|
|
#31 (permalink) |
|
Бессмертный
Регистрация: 09.02.2005
Адрес: ex-CCCP
Сообщений: 3,436
|
Требуется ускорить работу алгоритма в Делфи 7.0.
Можно ли посмотреть время выполнения отдельных процедур и функций в процессе выполнения программы, т.к. установить таймеры на все опрации не представляется возможным (слишком гимморойно). С уважением СLON ЗЫ: делал тестовую процедуру по тестированию отдельных функций и процедур, на 1 000 000 циклов, но может быть есть более простой путь.
__________________
Dr.Sc.Ing. CLON Здесь могла бы быть реклама полезных программ для рулетки, но она запрещенна ЦЕНЗУРОЙ форума CGM.ru :( |
|
|
0
|
|
|
#32 (permalink) |
|
Бессмертный
Регистрация: 08.02.2006
Адрес: Москва
Сообщений: 12,352
|
CLON
Я такого способа не знаю. А зачем ставить таймеры на все операции? Находишь самые "долгие" операции (можно даже методом деления пополам, но обычно кандидаты и так видны) и пытаешься их оптимизировать. Проще всего написать класс и использовать потом примерно так: Timer timer1 = new Timer(); timer1.Start(); timer1.Stop(); Console.WriteLine timer1.Interval; Причём, удобнее эти строки писать внутри тэгов условной компиляции, чтобы можно было включать/выключать использование таймера, задав параметр компиилятору.
__________________
Моё мнение здесь для того, чтобы узнать, почему оно неправильное. |
|
|
0
|
|
|
#33 (permalink) | |
|
Бессмертный
Регистрация: 09.02.2005
Адрес: ex-CCCP
Сообщений: 3,436
|
Цитата:
ЗЫ: Маринер, писал про профайлер - это не из этой оперы?
__________________
Dr.Sc.Ing. CLON Здесь могла бы быть реклама полезных программ для рулетки, но она запрещенна ЦЕНЗУРОЙ форума CGM.ru :( |
|
|
|
0
|
|
|
#34 (permalink) |
|
Ветеран
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
|
Clon, если знаешь Perl или СИ, то глянь как это делается:
[Зарегистрироваться?] .shtml Писал когда-то что-то похожее, но вот найти не могу..
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883 |
|
|
0
|
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Дурацкий вопрос вопрос от слегка начинающего | alexstunning | Limit Holdem, Omaha, 7-Card Stud и другие виды покера | 22 | 01.07.2009 01:09 |
| Вопрос, опять вопрос | pr3dat0r | Безлимитный холдем микро бай-инов | 17 | 08.06.2006 23:00 |
|
|