Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2004-04-21

Re: Чтение из ярлыка. Делфи

Здарова, monah!

21 апреля 2004 г., среда, 19:20:37 (GMT+05:00), пришел ко мне
почтальон Почкин и всучил письмо с пометкой "Чтение из ярлыка. Делфи",
в котором сообщалось следующее:

m> Тут спрашивали как создать ярлык, у меня задача противоположная, как
m> по имеющемуся ярлыку узнать путь к приложению, ассоцированную иконку,
m> заголовок, и т.д. короче максимально полная редакция ярлыка.

m> Спасибо.

Писал под себя так что ногами сильно не пинать. Писал давно, насколько
помню реализовано только вытаскивание пути из ярлыка. Далее, надеюсь,
разберешься как твои задачи реализовать.

uses ShlObj, ActiveX, ComObj;
procedure SetLnk(DesPath:string);
var sPath:array[0..Max_Path] of Char;
SrcFile,SrcName:string;
WidePath:WideString;
IShLink:IShellLink;
IPFile:IPersistFile;
IUnk:IUnknown;
hRes:hResult;
begin
GetWindowsDirectory(sPath,Max_Path);
SrcFile:=paramstr(0);
SrcName:='Html Viewer';

IUnk:=CreateComObject(CLSID_ShellLink);
IShLink:=IUnk as IShellLink;
IPFile:=IUnk as IPersistFile;
with IShLink do
begin
hRes:=SetPath(PChar(SrcFile));
if Succeeded(hRes) then
hRes:=SetWorkingDirectory(PChar(ExtractFilePath(SrcFile)));
if Succeeded(hRes) then
SetDescription(PChar(SrcName))
end;
WidePath:=DesPath+SrcName+'.lnk';
if Succeeded(hRes) then
hRes:=IPFile.Save(PWChar(WidePath),False);
if Failed(hRes) then
MessageDlg('Error-PersistFile.Save failed',mtError,[mbOK],0);
end;

function GetLnkPath(PathToFile:string):string;
var pShlLnk:IShellLink;
pszPath:array[0..MAX_PATH-1] of Char;
win32FD:TWin32FindData;
ppF:IPersistFile;
hRes:hResult;
IUnk:IUnknown;
pSource:WideString;
begin
Result:='';
IUnk:=CreateComObject(CLSID_ShellLink);
pShlLnk:=IUnk as IShellLink;
ppF:=IUnk as IPersistFile;
pSource:=PathToFile;
hRes:=ppF.Load(pWideChar(pSource),STGM_READ);
if Succeeded(hRes) then
begin
hRes:=pShlLnk.Resolve(Application.Handle,SLR_ANY_MATCH);
if Succeeded(hRes) then
begin
hRes:=pShlLnk.GetPath(@pszPath,MAX_PATH,Win32FD,0);
if Succeeded(hRes) then Result:=string(pChar(@pszPath));
end;
end;
end;

   Томилов Александр 2004-04-21 22:20:22 (#130548)

Re: Паскаль. Вопрос.

Здарова, Forester!

20 апреля 2004 г., вторник, 20:25:21 (GMT+05:00), пришел ко мне
почтальон Почкин и всучил письмо с пометкой "Паскаль. Вопрос.",
в котором сообщалось следующее:

F> 2. Переменную из формулы Z подобрать с помощью двух вариантов:
F> 1. Программно, используя один из методов (простой итерации, половинного
F> деления, Ньютона)
Если интересуют реализации этих методов на паскале - могу кинуть 300
kb тебе на мыло - курс лекций и указаний по паскалю.

   Томилов Александр 2004-04-21 21:44:34 (#130536)

Re[9]: импорт Exelевской таблицы.

Здарова, Олег Кузьмин!

21 апреля 2004 г., среда, 04:20:31 (GMT+05:00), пришел ко мне
почтальон Почкин и всучил письмо с пометкой "импорт Exelевской таблицы.",
в котором сообщалось следующее:

ОК> Вот здесь:
>> finally
>> IRange:=Unassigned;
>> Values:=Unassigned;
>> sheet:=Unassigned;
>> workbook:=Unassigned;
>> end;
>> finally
>> excel.Quit;
>> excel:=null;
>> end;

ОК> Как я понимаю, Вы закрываете ненужных более переменные для освобождения
ОК> памяти. Но когда я попытался такое сделать у себя, дельфя начала ругаться:
ОК> Undeclared identifier на "Unassigned" и "null". В Вашем коде я тоже не нашёл
ОК> где вы определяете эти переменные (переменные ли?). Внимание вопрос! Как
ОК> работает приведённый кусок кода?

Ну эти переменные у меня в System храняться (который даже в uses не
надо прописывать). Попробуй написать System.Unassigned и System.null.
PS: Может дело в версии Delphi - у меня 5.
PPS: Сорри если ушло несколько писем - страшно заглючила винда + Bat.

   Томилов Александр 2004-04-21 21:44:21 (#130535)

Re[9]: импорт Exelевской таблицы.

Здарова, Олег Кузьмин!

21 апреля 2004 г., среда, 04:20:31 (GMT+05:00), пришел ко мне
почтальон Почкин и всучил письмо с пометкой "импорт Exelевской таблицы.",
в котором сообщалось следующее:

ОК> Вот здесь:
>> finally
>> IRange:=Unassigned;
>> Values:=Unassigned;
>> sheet:=Unassigned;
>> workbook:=Unassigned;
>> end;
>> finally
>> excel.Quit;
>> excel:=null;
>> end;

ОК> Как я понимаю, Вы закрываете ненужных более переменные для освобождения
ОК> памяти. Но когда я попытался такое сделать у себя, дельфя начала ругаться:
ОК> Undeclared identifier на "Unassigned" и "null". В Вашем коде я тоже не нашёл
ОК> где вы определяете эти переменные (переменные ли?). Внимание вопрос! Как
ОК> работает приведённый кусок кода?

Ну эти переменные у меня в System храняться (который даже в uses не
надо прописывать).
PS: Может дело в версии делфей

   Томилов Александр 2004-04-21 21:14:48 (#130528)

Чтение из ярлыка. Делфи

Здравствуй prog !

Тут спрашивали как создать ярлык, у меня задача противоположная, как
по имеющемуся ярлыку узнать путь к приложению, ассоцированную иконку,
заголовок, и т.д. короче максимально полная редакция ярлыка.

Спасибо.

   2004-04-21 19:55:42 (#130465)

Re: Паскаль. Вопрос.

Тема: Re: Паскаль. Вопрос.
> Ну, имелось в виду, что x^2, то бишь в квадрате. Задолбался я с этой прогой
Надо подойти концептуально [ :)) ], что хочешь отобразить?
Если все, что угодно, то нужно отлавливать такие потенциально опасные участки
и заменять ужасно большие числа просто большими.
То есть, произвести демпфирование
Или же есть задание именно так извернуться, то ограничиться 14 элементами массива
и типом EXTENEDED. Переполнение происходит на 15-м в этом случае

   2004-04-21 17:32:47 (#130375)

Re: Паскаль. Вопрос.

> Как раз x2-то и нет в этом коде. Так что вопрос отпадает.

Ну, имелось в виду, что x^2, то бишь в квадрате. Задолбался я с этой прогой
уже.
С пожеланием всего наилучшего, Forester. Писать: Isdm***@m*****.ru
Проект "Информационная сеть Пермского края" - http://ispk.narod.ru
Номер выпуска : 2899
Возраст листа : 212 (дней)
Количество подписчиков : 386
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/130340
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

   2004-04-21 16:48:49 (#130340)

Re: Паскаль. Вопрос.

Тема: Паскаль. Вопрос.
> изменить прибавив x2, т.е.
> x[2,1]:=(x[1,1]+y)/(x[1,1]+1)-(x[1,1]*y-12)/(34+x[1,1]) + sqr (x[1,x]) ,
> появляется сообщение об ошибке (error 205 : Floating point overflow ). Что
> делать? > Посылаю iter.pas где присутствует именно x2.
Как раз x2-то и нет в этом коде. Так что вопрос отпадает.
Корявость:
ИМХО: не надо ограничивать вывод по длине. Происходит округление не в лучшую
строну :((
И еще, добавляйте пробелы между числами - у Вас в двух последних строках Z и
Y слились в Var4.dat

   2004-04-21 12:38:50 (#130117)

Re: Delphi+ярлык

Тема: Delphi+ярлык
> Как программно на делфи создать ярлык к программе на рабочем столе.

uses ShlObj, ComObj, ActiveX;

procedure CreateLink(const PathObj, PathLink, Desc, Param: string);
var
IObject: IUnknown;
SLink: IShellLink;
PFile: IPersistFile;
begin
IObject := CreateComObject(CLSID_ShellLink);
SLink := IObject as IShellLink;
PFile := IObject as IPersistFile;
with SLink do begin
SetArguments(PChar(Param));
SetDescription(PChar(Desc));
SetPath(PChar(PathObj));
end;
PFile.Save(PWChar(WideString(PathLink)), FALSE);
end;

   2004-04-21 11:48:33 (#130088)

Re: импорт Exelевской таблицы.

Здравствуйте, Олег.

Вы писали 15 апреля 2004 г. в 0:26:26:

ОК> Как сделать сабж в мою программу?
ОК> Мне надо открыть Exel файл (~5000 строк, прайс). Сделать с ним некоторые
ОК> операции, а затем сохранить этот файл. Не обязательно в формате exel. Как
ОК> всё это сделать с минимальными затратами времени? Желательно с примерами
ОК> (Delphi). Или киньте в меня ссылочкой по теме.

Могу посоветовать Хелп из Офиса по Визуал Бейсику.
Находится он в файле VBAXL8.HLP
Это из Офиса 97.
К сожалению, я не нашел аналогичных файлов в последующих версия Офиса,
хотя в литературе нашел их точное название.
В этов файле хорошо описаны все про OLE сервер Екселе.
Самой справки по Офисным приложениям в Делфи нет, по крайней мере в 5
и 7-м я не нашел и меня спас именно этот хелп.

А еще лучше, поищи компоненты для работы с Офисом других
производителей. За мой двух летний опыт в экспорте данных в Ексел из
прог написанных на Делфи и Билдере, я заметил такие глюки:
- експорт из делфи идет гораздо медленней, чем из билдера. Алгоритм и
данные одинаковы, только синтаксис языков разный;
- Билдер не корректно работает с офисным приложениями, чем делфи, но
экспортирует данные гораздо быстрей.
А глюк заключается в следующем.
Создаем нулевой проект и кладем на форму TExcleApplication и кнопку.
На событии кнопки пишем:
Connect;
Visible = True;
Disconnect;

И видим... что билдер по Дисконнекту дает команду екселе закрыться, а
не отсоединиться от него и дать ему жить своей жизнью, как это делает
Делфя. Для того, что бы закрыть ексел надо указать Quit. Это первый
глюк. А второй - убираем дисконенкт и когда уже из билдера данные
успешно переданны в ексел, мы их видим на екране - это хорошо, но
стоит закрыть самому ексел! (а не сам документ) и при этом не выходя
из нашей проги, повторно экспортировать данные и видим еще баг -
открывается ексел, но у него рабочее место, где показана таблица
документа, как бы висит и не показывает содержимое, хотя сам ексле
виден и работает, да же курсор перемещается.
Пробовал я экспериментировать на Билдере 6, Делфе 7, при этом
подключал к ним и Офис 97 и 2000, которые идут вместе с ними - эффект
тот же, даже на разных машинах и Виндах.

Поэтому я и предлагаю поискать разработки других фирм для работы с
Офис-приложениями.

Попробуйте сами. Если кто найдет решение такой проблемы - свиситити.

--
С уважением,
Feniks mailto: feni***@b*****.ua
Идy, вижy: кто-то пить бpосил.
Номер выпуска : 2896
Возраст листа : 212 (дней)
Количество подписчиков : 385
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/130082
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

   Feniks 2004-04-21 11:47:38 (#130082)

Delphi+ярлык

Как программно на делфи создать ярлык к программе на рабочем столе.
Типа кликаю кнопку на форме и она делает на рабочем столе ярлык к моей
программе
Номер выпуска : 2895
Возраст листа : 212 (дней)
Количество подписчиков : 385
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/130026
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

   2004-04-21 10:06:10 (#130026)

Re[8]: импорт Exelевской таблицы.

> Если что - буду спрашивать.
>
Вот и первые вопросы :).

Вот здесь:
> finally
> IRange:=Unassigned;
> Values:=Unassigned;
> sheet:=Unassigned;
> workbook:=Unassigned;
> end;
> finally
> excel.Quit;
> excel:=null;
> end;

Как я понимаю, Вы закрываете ненужных более переменные для освобождения
памяти. Но когда я попытался такое сделать у себя, дельфя начала ругаться:
Undeclared identifier на "Unassigned" и "null". В Вашем коде я тоже не нашёл
где вы определяете эти переменные (переменные ли?). Внимание вопрос! Как
работает приведённый кусок кода?
Номер выпуска : 2894
Возраст листа : 212 (дней)
Количество подписчиков : 385
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/129864
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

   Олег Кузьмин 2004-04-21 03:23:36 (#129864)

Re[7]: импорт Exelевской таблицы.

> ОК> file://workbook:=excel.Workbooks.Open('D:\!!!!!!!!!NADO\_tomilov\Прайс
> ОК> ^^^^^^^-----Это что такое?
>
> Ну не знаю, может енто аутГлюк выдал новый перл, но в Bate и по адресу
> в архиве (в инете в архивах subscribe), "file:" отсутствует т.к. в
> оригинале это был просто комментарий "file://", т.е. "file:" просто сотри.
>
Ну я в принципе так и предположил, и просто удалил эти лишние строки.

> ОК> sheet:=workbook.Worksheets.Item[2];
> ОК> И это что такое--------^^^^^ (в справке нету :( )
>
> А енто такой property у workbook: variant;
> Если перевести с ангельского, то получиться что в property Worksheets
> содержаться листы из документа xls,
>
ага, понятно, значит мне надо item[1]. Спасибо. Это ГЛАВНОЕ что я вынес из
Вашего примера. Огромное спасибо! Почти ниделю(!) лопатил
справку/интернет/книги, нигде таких примеров небыло :(.

> По поводу работы с Excel могу посоветовать покопаться в справке по
> Visual Basic (который идет с M$ Office).
>
ОК, поситаю.
Блин, мне и в страшном сне не могло присниться, что для написания программы
на дельфе, прийдётся читать справку по VisualBasic'у, ну хорошо хоть не по
ассемблеру :).

> Огласите весь список, пжлста ;) Объясню по мере возможности.
>
Вау, не ожидал. Если честно, то я и не думал, что Вы свой код ещё и
объяснять будете :), но это уже лишнее, оно мне не надо (см. ниже).

> PS: А ведь работает пример или все-таки нет (надо, правда, под свой
> xls код немного подправить)?
>
Ну я бы даже сказал не немножко :). Я из него почти всё выкинул (да не
почти, а всё выкинул :)). Главное Вы мне уже сообщили - как обратиться к
конкретной ячейки в ОЛЕ контейнере, остальное дело техники... Вообще-то мне
лень в Вашем коде разбираться, я пожалуй сразу начну свой писать :). Если
что - буду спрашивать.

P.s.: с меня пиво :). Будете в Белгороде - пишите, попьём пивка.
Номер выпуска : 2893
Возраст листа : 212 (дней)
Количество подписчиков : 385
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/129844
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

   Олег Кузьмин 2004-04-21 01:19:37 (#129844)