| ||||
| ||||
|
Важные объявления |
|
25.07.2006, 00:26 TS | #21 (permalink) |
Бессмертный
Регистрация: 09.02.2005
Адрес: ex-CCCP
Сообщений: 3,436
|
Да нет. Стоит Ехсел2000. Компоненты офиса 2000 тоже стоят.
Делфи знаю нормально (решал все задачи, которые требовалось решить), но с ОЛЕ никогда прежде не работал. Просто сейчас не когда разбираться. 8-) И тем более я не программист.
__________________
Dr.Sc.Ing. CLON Здесь могла бы быть реклама полезных программ для рулетки, но она запрещенна ЦЕНЗУРОЙ форума CGM.ru :( |
0 |
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 |
0 |
25.07.2006, 00:51 | #24 (permalink) |
Ветеран
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
|
Если версия Delphi ниже чем у меня, поставьте апдейты.Если версия старше чем у меня, тут уж нужно разбираться будет.
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883 |
0 |
25.07.2006, 00:52 TS | #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 |
25.07.2006, 00:56 | #27 (permalink) |
Ветеран
Регистрация: 26.11.2005
Адрес: Минск
Сообщений: 1,242
|
Мде, вот и обратная совместимость... Короче лезем в хелп, и смотрим что там используется вместо Range в 7 версии..
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883 |
0 |
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.
__________________
Единственный способ стать умнее -- играть с более умным противником. // Основы шахмат\'1883 |
0 |
28.07.2006, 21:56 TS | #30 (permalink) |
Бессмертный
Регистрация: 09.02.2005
Адрес: ex-CCCP
Сообщений: 3,436
|
Sharky, посмотрел файлы и откомпелировал прогу. Все работает.
Проблемма действительно была в компоненте. Да посмотрел текс программы. Я такого никогда раньше не делал, но в общем смысл действий понятен. Почти так же работаю с БД. Спасибо. ЗЫ: Ловлю тебя на слове, если будут вопросы обязательно спрошу.
__________________
Dr.Sc.Ing. CLON Здесь могла бы быть реклама полезных программ для рулетки, но она запрещенна ЦЕНЗУРОЙ форума CGM.ru :( |
0 |
25.11.2006, 13:01 TS | #31 (permalink) |
Бессмертный
Регистрация: 09.02.2005
Адрес: ex-CCCP
Сообщений: 3,436
|
Требуется ускорить работу алгоритма в Делфи 7.0.
Можно ли посмотреть время выполнения отдельных процедур и функций в процессе выполнения программы, т.к. установить таймеры на все опрации не представляется возможным (слишком гимморойно). С уважением СLON ЗЫ: делал тестовую процедуру по тестированию отдельных функций и процедур, на 1 000 000 циклов, но может быть есть более простой путь.
__________________
Dr.Sc.Ing. CLON Здесь могла бы быть реклама полезных программ для рулетки, но она запрещенна ЦЕНЗУРОЙ форума CGM.ru :( |
0 |
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; Причём, удобнее эти строки писать внутри тэгов условной компиляции, чтобы можно было включать/выключать использование таймера, задав параметр компиилятору.
__________________
Моё мнение здесь для того, чтобы узнать, почему оно неправильное. |
0 |
30.11.2006, 09:51 TS | #33 (permalink) | |
Бессмертный
Регистрация: 09.02.2005
Адрес: ex-CCCP
Сообщений: 3,436
|
Цитата:
ЗЫ: Маринер, писал про профайлер - это не из этой оперы?
__________________
Dr.Sc.Ing. CLON Здесь могла бы быть реклама полезных программ для рулетки, но она запрещенна ЦЕНЗУРОЙ форума CGM.ru :( |
|
0 |
30.11.2006, 14:20 | #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 |
|
|