Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Разное > Флейм
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.07.2008, 13:28
Аватар для Appolon
Appolon Appolon вне форума
Новичок
 
Регистрация: 10.01.2008
Адрес: гЕйск
Сообщения: 76
Репутация: 16
По умолчанию Грамотно ли это??

У нас в лечебных учреждениях Краснодарского края программа Краснодарской фирмы КМИВЦ. У них вообщем много косяков в программах...
Но я был очень сильно удивлен как у них работают отчеты в офисовские приложение...
Они берут строку в буфер обмена и вставляют ее в приложение.
Интересно много таких разработчиков которые с офисом работают через буфер??
И насколько это грамотно использовать буфер обмена при экспорте отчетов??
Я, например, считаю, что это верх безграмотности разработчиков.
А на их программах половина Краснодарского края работают.
__________________
From VasYa with LoVe...
Ответить с цитированием
  #2  
Старый 09.07.2008, 13:50
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Работает, ну и ладно
Ничего идеального в мире нет, кроме вселенной-которая идеальна и гениальна.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 09.07.2008, 15:05
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Вставка через буфер позволяет достичь просто ОФИГЕННОЙ скорости передачи данных.
Попробуйте в Excel добавить, скажем, 150 000 записей... Легче повеситься. Вставка же
через буфер длает это за пару секунд.

Код:
procedure PasteToColumn(var Buf:string; x,count:integer; Var Sheet:variant);
var
IR2,IR1: ExcelRange;
begin
  Clipboard.AsText:=Buf;
  IDispatch(IR1):=Sheet.Cells.Item[1, x];
  IDispatch(IR2):=Sheet.Cells.Item[count, x];
  OLEVariant(Sheet.Range[IR1, IR2]).PasteSpecial;
  Clipboard.Clear;
  Buf:='';
end;

procedure TForm1.ExportToExcel(FileName:string);
var
XLApp,Sheet:Variant;
index,x:Integer;
str,Buf:string;
begin
try
Buf:='';
XLApp:= CreateOleObject('Excel.Application');  //Создаем Excel Application
XLApp.Visible:=true;                           //Показываем его
XLApp.Workbooks.Add(-4167);                    //добавляем книгу
XLApp.Workbooks[1].WorkSheets[1].Name:='Отчёт';
Sheet:=XLApp.Workbooks[1].WorkSheets['Отчёт'];

 AssignFile(input,filename);
 Reset(input);                //открываем файл на чтение
 index:=1;
 x:=1;
  while not eof(input) do begin
   Readln(str);
   Buf:=Buf+str+#9#10;
   if index mod 65536=0 then begin //если дошли до конца столбца (Excel), то копируем то что в буфере в этот столбец
    PasteToColumn(Buf,x,65536,Sheet);
    x:=x+1;  //далее будем добавлять в другой столбец
    index:=0;
    application.ProcessMessages;
   end;
   index:=index+1;
  end;
  PasteToColumn(Buf,x,index,Sheet); //если что то осталось, то вставляем оставшееся
  CloseFile(input);
except
 CloseFile(input);
 showmessage('Ошибка при экспорте данных');
end;
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:19.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter