Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4

Модерирует : ShIvADeSt

ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

RedPromo



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dimmick
А можно полностью весь текст ошибки.

Всего записей: 559 | Зарегистр. 05-04-2006 | Отправлено: 14:03 13-05-2008
GrHnd



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dimmick
Непонятно - как ругается (что при этом говорит).
По поводу system.pas - может не прописан путь к system.dcu - посмотри Tools/Environment Options далее в закладке Library: Library path должна содержать в себе $(DELPHI)\Lib

Всего записей: 867 | Зарегистр. 01-04-2005 | Отправлено: 14:40 13-05-2008
TohaDub



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Но, как показала практика, в БД лучше хранить чистые документы (файла .doc, .tif и др.) чтобы после сохранения их в файле, можно было их открыть с любом установленном приложении.

Мне как раз и надо хранить не пустые доки а шаблоны документов в которых через "закладки " вставляются данные, распечатываются, и сохраняются в базе и должны лежать в базе.
 

Цитата:
В случае же с OleContainer после сохранения в БД их можно будет открыть только через OleContainer c помощью того приложения, которым оно сохранялась, что не очень хорошо.

Это в смысле только моя программа откроет их, а просто в аксцес зайти и шмякнуть два раза не получится? Если да то в моем случае это хорошо.
 
Мне надо что бы открылся ворд и в нем был текст из моей ячейки базы. Это невозможно без сохранения в файл? И Вы пишите что  
Цитата:
Если в ячейке базы лежит OLE поле с документом, то надо сначала содержимое ячейки сохранить в file
так я и туплю как ее треклятую в файл запинать.

Всего записей: 371 | Зарегистр. 26-06-2007 | Отправлено: 15:47 13-05-2008 | Исправлено: TohaDub, 16:09 13-05-2008
GrHnd



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
так я и туплю как ее треклятую в файл запинать

пример (для доступа к БД используется Direct Oracle Access от Allroundautomations)
procedure TForm1.Button1Click(Sender: TObject);
begin
with OracleDataSet1 do begin
  Open;
  if not EOF then begin
      if not OracleDataSet1DOC.IsNull then begin
         try OracleDataSet1DOC.SaveToFile (F_Name); // сохранение в файле
         with OleContainer1 do
           begin
           OleContainer1.LoadFromFile(F_Name); // загрузка в OLE
           DoVerb(PrimaryVerb);  // чтобы можно было редактировать
           end;
         except on E: Exception do
           begin
             Application.MessageBox(PChar('Ошибка загрузки документа. Попробуйте еще раз!'
             ),PChar(E.Message),mb_IconExclamation);
           end
         end;
         end;
    end;
  end;
end;
а в OracleDataSet1 сидит SQL запрос 'select doc from table1
where ...'
 

Цитата:
Мне как раз и надо хранить не пустые доки а шаблоны документов в которых через "закладки " вставляются данные, распечатываются, и сохраняются в базе и должны лежать в базе.

 А зачем нужен OleContainer - это-же лишний геморой.
Храни в ячейках БД шаблоны, затем, сохраняя их в файле загружай его с помощью программы в Word, программно вставляй данные, распечатывай и сохраняй полученный документ в ячейках другой таблицы.

Всего записей: 867 | Зарегистр. 01-04-2005 | Отправлено: 16:58 13-05-2008 | Исправлено: GrHnd, 17:14 13-05-2008
TohaDub



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
    if not OracleDataSet1DOC.IsNull then begin
         try OracleDataSet1DOC.SaveToFile (F_Name); // сохранение в файле  

GrHnd, судя по этой конструкции, сохраняется весь датасэт, и в файле получается нечитаемый формат.
Непонятен момент откуда взялся OracleDataSet1DOC? Вначале идет открытие просто OracleDataSet1, а приставка DOC откуда берется? Или это имеется ввиду имя столбца в базе, но Дельфя не видит его, и не может определить его. Хмммм.
Я пробую через ADO сделать.
 
Нашел способ сохранения одной строчкой:
(ADODataSet1.FieldByName('PPrint') as TBlobField).savetofile('c:\1.doc');
 
но в любом из случаев сохранения - сохраняется, а при открытии вордом выдается:

 
а в far-е, выдает что "Неожиданный конец архива!" и далее:

 
В базу сохранены (непосредственно через access) BLOB поля в формате MS Word 97-2003. Перепробовал разные форматы, результат один - крякозяблики. Ниче не понимаю.  
 

Всего записей: 371 | Зарегистр. 26-06-2007 | Отправлено: 19:46 13-05-2008 | Исправлено: TohaDub, 21:06 13-05-2008
Erazer



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите хороший апдейтер... пытаю http://www.ionworx.com/goupdater.html, но чет мне не нравится каждый раз создавать апдейт паки, и кажись оно обновляет не только изменившиеся или добавившиеся файлы, а все скопом хоцца чтобы обновлялись только изменившие-ся файлы, и так чтобы выложил на фтп, а оно с него по необходимости обновляло... без ручного создания апдейтов...

Всего записей: 1731 | Зарегистр. 02-08-2003 | Отправлено: 00:39 14-05-2008
Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как получить список элементов панели управления (имя, иконка, имя для запуска)? Пока единственное что мне пришло в голову - искать все *.cpl файлы в system32 и вытаскивать информацию через экспортируемую функцию. Может есть более простое решение? Да и не все элементы организованы через *.cpl (display, ptinters, ...)

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 03:01 14-05-2008
GrHnd



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TohaDub

Цитата:
судя по этой конструкции, сохраняется весь датасэт,

Никак нет. OracleDataSet1 для удобства работы позволяет в себе создавать поля соответствующие столбцам БД. OracleDataSet1DOC соответствует ячейке DOC. f not OracleDataSet1DOC.IsNull проверяет не пуста ли она. OracleDataSet1DOC.SaveToFile (F_Name) сохраняет ее содержимое на диск, что аналогично (ADODataSet1.FieldByName('PPrint') as TBlobField).savetofile('c:\1.doc');
 

Цитата:
Непонятен момент откуда взялся OracleDataSet1DOC?

Для его получения надо в контекстном меню  выбрать "Fields Editor", и в нем "Add all fields", после чего добавится элемент OracleDataSet1DOC, описывающий поле DOC из SQL запроса.
 
Можно попробовать загрузить сохраненный файл в OLEConteiner(конечно если есть уверенность, что это OLE поле с вордовским документом):
 
          OleContainer1.LoadFromFile(F_Name); // загрузка в OLE  
           DoVerb(PrimaryVerb);  // чтобы можно было редактировать
Посмотри мой пред пост, я его обновил.

Всего записей: 867 | Зарегистр. 01-04-2005 | Отправлено: 09:42 14-05-2008 | Исправлено: GrHnd, 09:44 14-05-2008
Dimmick



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GrHnd, RedPromo всё оказалось проще чем хотелось, оказывается русификатор для делфи кривой был, переставил всё норм

Всего записей: 1163 | Зарегистр. 25-03-2006 | Отправлено: 10:24 14-05-2008
RedPromo



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dimmick
Вобще видел вроде для 7 русик, но никогда даже не думал пользоватся. Наоборот как-то непривычно даже если по русски будет меню.

Всего записей: 559 | Зарегистр. 05-04-2006 | Отправлено: 14:51 14-05-2008
TohaDub



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GrHnd
Ну а как быть с тем что он сохраняется с крокозябликами?

Всего записей: 371 | Зарегистр. 26-06-2007 | Отправлено: 15:13 14-05-2008
GrHnd



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TohaDub
Пришли мне этот файлик на #, попробую его загрузить в OleConteiner.

Всего записей: 867 | Зарегистр. 01-04-2005 | Отправлено: 15:41 14-05-2008
Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как получить иконки Моего компьютера, Моих документов, Корзины и т.д.? С учетом того, что пользователь может указать свои

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 11:26 17-05-2008
YFred



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Народ скажите возможно ли в тексте программы в зависимости от условия менять имя объекта к которому обращаемся. Например как то так:
  (label+a).caption = "название";
где в переменной а хранится номер надписи 1 или 2
т.е. надо чтоб в зависимости от значения "a" получалось label1.caption = "название" либо label2.caption = "название";
 
Очень надо.

Всего записей: 210 | Зарегистр. 03-03-2005 | Отправлено: 11:39 17-05-2008
Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
YFred, можно:

Код:
var
  a: string;
begin
  a := '1';
  (FindComponent('Label' + a) as TLabel).Caption := 'Hello world';
end;

Вернемся к моему вопросу

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 12:15 17-05-2008
YFred



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Jokerjar79
А как сделать тоже самое только не TLabel, а с записью (record)?

Всего записей: 210 | Зарегистр. 03-03-2005 | Отправлено: 12:45 17-05-2008
Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
YFred, думаю лучший вариант - использовать массив записей

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 13:03 17-05-2008
YFred



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Jokerjar79
Для моей задачи это не подходит. Еще есть варианты?
Вот код который мне нужно переписать по другому:

Код:
 
  Case hod of
        1: begin
             n1:=pers1.B+pers1.c3-generator(10);
             n2:=pers2.b3+pers2.C-generator(10);
          end;
        2: begin
             n1:=pers2.B+pers2.c3-generator(10);
             n2:=pers1.b3+pers1.C-generator(10);
          end;
        end;
 

Как можно записать кросивее без case и повтора однотипных формул?

Всего записей: 210 | Зарегистр. 03-03-2005 | Отправлено: 13:09 17-05-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YFred
для начала можно сократить хотя бы так:

Код:
gen10 := -generator(10);
n1 := gen10;
n2 := gen10;
Case hod of
        1: begin
             inc(n1, pers1.B+pers1.c3);
             inc(n2, pers2.b3+pers2.C);
          end;
        2: begin
             inc(n1, pers2.B+pers2.c3);
             inc(n2, pers1.b3+pers1.C);
          end;
        end;

или даже так:

Код:
n1 := gen10;
n2 := gen10;
Case hod of
        1: begin
             inc1 := pers1.B+pers1.c3;
             inc2 := pers2.b3+pers2.C;
          end;
        2: begin
             inc1 := pers2.B+pers2.c3;
             inc2 := pers1.b3+pers1.C;
          end;
        end;
inc(n1, inc1);
inc(n2, inc2);

а дальше -- только извращения...
да и зачем это всё на фиг надо...

Всего записей: 24843 | Зарегистр. 06-12-2002 | Отправлено: 17:43 17-05-2008 | Исправлено: akaGM, 17:49 17-05-2008
Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Я тоже думаю, что извращаться не стоит.
 
З.Ы. Если вариантов hod только два, можно и без case
 
Добавлено:
Я тоже думаю, что извращаться не стоит.
 
З.Ы. Если вариантов hod только два, можно и без case

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 19:01 17-05-2008
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru