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

Delphi - проблемы и решения

  Все выпуски  

Проблемы и решения в Delphi #10


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Проблемы и решения в Delphi - выпуск 10 от 9.08.2001.


Что такое Windows - это API.
Плачущее API под Deph-ями.

ВСЕ ВОПРОСЫ СПРОСИТЬ ПРЕДЛОЖИТЬ АРХИВЫ СКОЛЬКО НАС


Доброго Вам времени суток уважаемый читатель.

В который уже раз :-(( хочу попросить всех подписчиков посылающих
вопросы,в теле письма не указывайте свои реквизиты, да и вообще
ничего лишнего.

Сегодня в выпуске :
~~~~~~~~~~~~~~~~~~~
1. Организационные вопросы.
2. Лучший ответ последнего выпуска.
3. Windos API и с чем его едят.
4. Неотвеченные вопросы прошлого раза.
5. Очередные вопросы.
6. В следующем выпуске.
~~~~~~~~~~~~~~~~~~~

1. Организационные вопросы.
---------------------------

Большое спасибо, от имени вопрошавших, хочу сказать всем приславшим
ответы на те или иные вопросы. Отдельно хочется поблагодарить
Vitaly Nevzorov,Vitalik,Лобастов Николай и Serge V. Frolov и
SibProgrammer Support, которые потратили не одну минуту дабы
просмотреть все вопросы.
В свою очередь хочу заверить всех, что все письма с ответами
пересылаются авторам вопросов. Поэтому, те кто цепляет
аттачи с примерчиками могут быть уверены,что страждущие
ответов, их получат.
Кроме того, хочу извиниться перед теми кто ждет ответа сразу
и не получает его. Я стараюсь отвечать быстро, но просто
не успеваю.

Теперь о приятном. Судя по всему очень многим понравилось
последнее предложение о поиске напарников для своих разработок.
Поэтому присылайте краткие их описания, а я буду их публиковать
в очередных выпусках.

И еще. Уже достаточно много вопросов есть с ответами, если кто-то
хочет заказать себе весь список, то пришлите письмо с
темой = VSEVOPR. А может кто и людям помочь захочет.

2. Лучший ответ последнего выпуска.
-----------------------------------
Только посмотрите - и с кодом, и с комментариями и, что
самое главное чувствуется уважение к спрашивающему. А то,
честно говоря, начитался я тут. Ну что это например за ответ:
'Можно'. Ну и что потом делать с таким ответом?

Вопрос 31:
От: Andrew G.

как работать с файлми *.xls (например, запись результатов расчетов в него)?
С уважением Гриько Андрей.

Отвечает Victor Novikov:

Приведу пример кода из проги которую когда-то делал
Для начала получим доступ к EXCEL

function TSetupReports.CreateExcel: variant;
begin
try
Result := CreateOLEObject('Excel.Application.8');
Result.Visible := true;
except
try
Result := CreateOLEObject('Excel.Application.5');
Result.Visible := true;
except
ShowMessage('Невозможно открыть Microsoft Excel.');
end;
end;
end;

затем в том месте где хотим в EXCEL запихать что-либо

try
V := CreateExcel;
V.WorkBooks.Add;
V.ActiveSheet.Cells[1, 1].Value := 'Подразделение';
V.ActiveSheet.Cells[1, 2].Value := 'Товарная группа';
V.ActiveSheet.Cells[1, 3].Value := 'Сумма на начало';
V.ActiveSheet.Cells[1, 4].Value := 'Сумма на конец';
qrStock.quFirst.First;
I := 2;
while not qrStock.quFirst.EOF do begin
V.ActiveSheet.Cells[I, 1].Value := qrStock.quFirstOtdel.Value;
V.ActiveSheet.Cells[I, 2].Value := qrStock.quFirstTGName.Value;
V.ActiveSheet.Cells[I, 3].Value := qrStock.quFirstSumB.Value;
V.ActiveSheet.Cells[I, 4].Value := qrStock.quFirstSumE.Value;
I := I+1;
qrStock.quFirst.Next;
end;
V := UnAssigned;
except
exit;
end;


3. Windos API и с чем его едят.
-------------------------------
Начнем с многострадального запуска программ. Ну столько вопросов :-)!
Существуют несколько функций на эту тему.
Это WinExec, просто оставлена для совместимости с ранними версиями
Windows.
Это ShellExecute, которая не только и не столько запускает программы,
а открывает или печатает файл, с учетом зарегестрированного на него
типа, а также открывает указанную папку. Возвращает Handle, открытого
окна.

Напомню,что при вызове их из Delphi нужно в 'uses' добавить ShellApi.
Начнем с ShellExecute. Вот так она выглядит дословно.

ShellExecute(h:Hwnd;Op,Fn,Par,Dir:PChar,cmd):THandle;

По порядку:
h - Хендл родительского окна, в котором будут сообщения
запукаемого приложения.

Op - Собственно, что собираемся делать. 'open'-открыть,
'print'-напечатать,'explore'-открыть папку. Если указать
'nil', то по умолчанию будет 'open'.

Fn - Это имя файла, ссылка, e-mail адрес, т.е. все, что в Windows
можно запустить дважды щелкнув мышкой. Единственный момент, который
хотелось-бы напомнить(сам ошибся недавно при ответах) это то, что
при указании URL обязателно нужно указывать 'http://'или'ftp://',
а для e-mail 'mailto:'.

Par - Это параметры, например можно запустить InternetExplorer
вот так:
ShellExecute(h,nil,'http://www.aport.ru',nil,nil,SW_Restore);

а можно вот так:
ShellExecute(h,nil,'iexplore','www.aport.ru',nil,SW_Restore);

И в том и в другом случае получим страничку Апорта. Однако
есть различие(был по моему такой вопрос,как раз и отвечу).
В первом случае при вторичной отработке команды она отработает
в уже запущенном окошке, а во втором создаст новое. Отсюда и
решение проблемки.

- (прб.4) Если при открытии URL Вам хочется получать новое окошко,
то запускайте его так
ShellExecute(h,nil,'iexplore','www.aport.ru',nil,SW_Restore); .


Dir - Просто какой каталог считать "по умолчанию".

cmd - А это методы "издевательств" над запущенным приложением.
Целый список получается.
SW_HIDE - Окошко становится невидимым.
SW_MINIMIZE - Минимизирует окно и активизирует окошко верхнего
уровня, т.е. Вашу программку, если Вы запускаете по кнопочке.
SW_MAXIMIZE - Наоборот распахивает окошко.
SW_RESTORE - Делает окошко таким каким оно было
последний раз.
Остальные команды не существенны или повторяют уже имеющиеся
с малыми отличиями.

Отдельно отмечу, что вместо Op,Par и Dir можно ставить 'nil'.

Теперь WinExec. Не думаю, что кто-то будет ей пользоваться, но
вдруг на Delphi1 кто-то пишет? Хотя полезно и для использующих
переменную окружения PATH.

Описывается она так.
WinExec(Fn:PChar,cmd:integer);

Fn - что запускаем и параметры.
cmd - тут то-же, что и у ShellExecute.

При запуске программы без указания явного пути ищет сначала ее
в каталоге откуда запускали, затем в текущем каталоге, затем в
системном Windows, далее в самом каталоге Windows и в конце
концов по переменной окружения PATH.

4. Неотвеченные вопросы прошлого раза.
--------------------------------------



Вопрос 3:
От: serg

Возможно ли сделать так, чтобы фоном объекта класса TRichEdit был
рисунок.



Ответить.

Ответ 1:

Именно с TRichEdit врядли.

Ответ 2:

Попробуй поиграться с Canvas RichEdit'а. Сам не пробовал.



Вопрос 10:
От: Alex

Здравствуйте, а вы не знаете как можно запустить одну программу в окне
другой, так что-бы строка заголовка запускаемой программы была скрыта
???


Ответить.

Ответ 1:
Только как COM объект, и то только если есть у него
соответствующие свойства и методы.


Вопрос 15:
От: Dmitry L. Yakovlev

Здраствуйте.
Как на ходу переключать Auto Insert Notification для CD-ROMа (их может
быть несколько)?
Заранее благодарен за ответ.
Дмитрий.


Ответить.

Ответ 1:


Вопрос 27:
От: Igor Nagirnyak

Здравствуйте.
Меня интересует возможность передачи звука через локальную сеть. То есть
то что говориться в микрофон на одной машине параллельно слышно из
колонок другой.


Ответить.

Ответ 1:
Это конечно же можно сделать и самому, но без специальных знаний в
области кодирования-декодирования звука работать все будет только
в локальной сети, да и то с задержками.



Вопрос 29:
От: Dizzer

Как в консольном приложении можно задать цвет текста, вывести текст в
указанном месте экана?


Ответить.

Ответ 1:



Вопрос 40:
От: Vilicinskii, Alexei

Здравствуйте все ....
Вопрос такого характера:
как бы организовать лог(когда зашли, что трогали, как трогали(RW), когда
вышли) посетителей моей машыны(W9X) в локалке, и желательно чтоб грамотно
....
чтоб не так тормозило ...... :)
Понимаю что вопрос сложный но хотяб идею и где искать
Заранее благодарен,
Lolik


Ответить.

Ответ 1:



Вопрос 48:
От: Yuriy Gonchar

Уже больше месяца пытаюсь разыскать DDG компоненты для Delphi 5.
Когда-то давно попадалась такая штука для 4-х.
Но к сожалению у меня не сохранилась.
И старые программки, использующие эти компоненты доработать не
получается :-((
Может кто знает где можно взять?


Ответить.

Ответ 1:



Вопрос 51:
От: oleg_zeos

Скажите пожайлуста как работать с компонентой WordParagraphFormat для
создания и форматирования новых параграфов.

Ответить.

Ответ 1:





5. Очередные вопросы.
---------------------



Вопрос 61:
От: Алексей Малиновский


У меня возникла проблема: у меня на форме имеется много объектов
(визуальных компонентов), их имена отличаются толлько окончаниями
названий, например LabelK1, LableK2 ... LabelK16 или PanelK1, PanelK2
... PanelK16. Так вот я хочу сделать процедуру, которая бы анализировала
бы их, если каждый компонент анализировать отдельно, то это будет очень
долго и муторно... :-( А как сделать так, чтобы анализировать например
какой нибудь один компонент типа LabelKx или PanelKx, и только
подставлять x, т.е. другими словами, как мне вычислять название
компонента и работать с ним?

Ответить.

Ответ 1:



Вопрос 62:
От: Vladiator

Добрый день!
Проблема следующая: необходимо сохранить параметры шрифта окна
StaticText2:TStaticText в файл 'emulator.cfg'. Делаю это таким образом:

--- CUT ---
var f :file;
textfont :tfont;
begin
textfont:=StaticText2.font;
assignfile(f,'emulator.cfg');
rewrite(f);
blockwrite(f,textfont,sizeof(textfont));
closefile(f);
end;
--- END CUT ---

В результате получаю файл размером 4 байта, причем к параметрам шрифта он
отношение имеет явно косвенное.
Подскажите, пожалуйста, что я сделал неправильно.


Ответить.

Ответ 1:



Вопрос 63:
От: Roman Kulish

Столкнулся с одной проблемой и вот такой вопросец: компилятор в
процессе компиляции программы выдает "Internal error $xxxxx", но
компилированная программа очень даже жизнеспособна. Но в 1 случае из
5-ти, по выходе из программы выдается "ошибка <нет данных> в модуле
<нет данных>" и после нее "Run-time error 216".
При чем компилировал программу на 6-ти разных тачках в Дельфях 4 и
5, кругом такая проблема. Четыре человека "просеивали" код по строчкам
и ничего не нашли. Программа состоит на 2/3 из VCL вызовов и на 1/3
написана на Вынь Апи :) Ни ассемблеровских вставок ни указаний
компилятору нет.
Кто-нибудь может подать идею с чем все это связано?


Ответить.

Ответ 1:



Вопрос 64:
От: Алексей

Здравствуйте!
Напишите пожалуйста, как будет выглядеть текст программы, окно которой имеет
просто одну кнопку, при нажатии на которую запустится программа C:\1\1.exe.
И будет ли это работать с относительным путём?
Я в этом полный ноль.


Ответить.

Ответ 1:



Вопрос 65:
От: ION

Обычно компилированный ЕХЕ файл занимает около 400, а как сделать его в
маленький размер около 50?


Ответить.

Ответ 1:
Можно, но тогда вместе с *.exe Вам придется распространять и
библиотеки. Для этого поставьте в опциях проекта галочку
на Packages\Build with runtime packages.



Вопрос 66:
От: Загорский Антон

А как записать (читать) в файл переменную, допустим, строкового типа, можно
ли это сделать, как в Паскале?



Ответить.

Ответ 1:
.....
var f : TextFile;

begin
AssignFile(f,'c:\qqq.txt');
Rewrite(f);
Writeln(f,'qqqqq');
CloseFile(f);

end;

Это как в паскале.
Можно еще так.
.....
var s : TStringList;
begin
s := TStringList.Create;
s.Text := 'qqqqqqq';
s.SaveToFile('c:\qqq.txt');
s.Free;
end;




Вопрос 67:
От: Gorojankin Dmitri

Добрый день.
Тут опять-же масса вариантов, если это интернет - поиск страничек,
то скачивать их можно через HTTP.
Если своя сеть, с заранее известными адресами, и поиск надо проводить
прямо в документах на машине, то тут просто - через зашаренные
ресурсы или посложнее - через сокеты, тогда нужна-таки серверная
часть.
Я думаю, что это не своя сеть, а сеть-WWW. Для конкретизации задачи
такой пример. Есть адрес какого либо словаря, по этому адресу имеется
N каких-то терминов и по каждому термину на отдельной страничке имеется
текст. Нужно програмно, начиная с главной странички, зайти на каждую
страничку и скачать все тексты.

Ответить.

Ответ 1:



Вопрос 68:
От: Хазанов

Здравствуйте!
Q: Как передать параметр в уже запущенную программу методом Dragamp&Drop?
Например, как сделать, чтобы после перетаскивания файла из
Проводника на форму последняя поменяла свой Caption на имя файла?
Спасибо - Михаил.


Ответить.

Ответ 1:



Вопрос 69:
От: Evgenii

Есть база данных написанная в InterBase. Связка
TTable-DataSource-DBGrid работает (можно редактировать таблицы,
удалять/добавлять записи), но при обращении к хранимым процедурам
(к примеру на удаление/модификацию записи) в DBGrid ничего не
меняется. Как можно исправить эту ситуацию?
Но связка TQuery-DataSource-DBGrid никак не работает. Через
компоненту DBGrid не добавить/удалить/модифицировать записи, и
при обращении к хранимой процедуре на, к примеру, удаление
записи, ничего нового не отображается в DBGrid.

Надеюсь на ответ. Спасибо.


Ответить.

Ответ 1:



Вопрос 70:
От: Илья

Здравствуйте

Имеется (скорее всего чисто логичекая) проблема с компонентами IB , а
конкретнее с IBDataBase (ох как не хочется выглядеть ламером :)) :
Как вы наверное знаете существует одно серьёзное отличие в параметрах
IBDataBase и просто DataBase - это DataBaseName , т.е. надо создать
файл с параметрами БД , а в хелпах от етого вопроса очень тактично
увиливают типа : "Укажите имя файла БД" :(
Что делал я (по аналогии с TTable):
- всякие там Params.add .......
- DataBaseName:='какой-нибудь.файл'
- CreateDataBase
Реакция при выполнении:
Что-то типа - "Невозможная или несуществующая БД" - Причем ошибка
именно на метод "Создать"
Моя реакция:
#8-0

Вот сижу и думаю , что либо у IBDataBase существуют некие обязательные
параметры, которых я не знаю и потому ессено их не указал, либо ето
просто какие-то бешеные глюки (уж у меня или Дэлфы - не знаю :))

Заранее благодарен за ответ!

Да, чуть не забыл - Ну хоть кто-нибудь может мне вразумительно
ответить почему например Paradox драйвер БД пашет идеально, а ни один
из ODBC-шных не работает совсем!!!!!!


Ответить.

Ответ 1:



Вопрос 71:
От: Фёдоров А. Н.

Привет господа хорошие делфисты! :)

Кто нибудь знает где найти инфу по созданию собственного
драйвера для коммуникационного порта (C\C++ или Delphi - всё равно)
на руском языке желательно конечно!



Ответить.

Ответ 1:



Вопрос 72:
От: oo

Hello ,

подскажите как работать с модемом под win 2000
написать простейший диалер я с хелпом так и не разобрался



Ответить.

Ответ 1:



Вопрос 73:
От: Grachev

Здравствуйте.
Как написать в Delphi процедуру, которая бы выполняла задержку времени.
Аналог процедуры Delay в Турбо Паскале.


Ответить.

Ответ 1:
Писать ничего не надо - есть функция WinAPI:
Sleep(s); // s - это миллисекунды.



Вопрос 74:
От: ruslan_as@papir.kiev.ua

Извините за непонятный интерфейс вопроса.
Дело в том, что мне нужно было сделать меню запуска программ.
Меню-программа будет находится в корневом каталоге на CD.
В этой программе мне нужно указать: запустить программу,
которая находиться в каталоге YYY на этом диске.
Но указать путь D:\YYY\proga.exe я не могу, так как у меня CD это
диск D:\ а у моего друга это диск F:\ и т.д., а может кто захочет
переписать мою программу себе на комп.
Появилась идея: может есть функция, которая мне укажет и переведет
в строковую переменную путь моей программки-меню. Т.е. если она
находится на диске F:\, то она она в строковую переменную
загонит "F:\", а если моя программа находиться на C:\TRT\ то
напишет "C:\TRT\".


Ответить.

Ответ 1:

Может вот так :

....
var
CurrntDir : String;
.....
procedure TTrmnForm.FormCreate(Sender: TObject);
begin

GetDir(0,CurrntDir); // Получаем полный путь к *.exe

end;



Вопрос 75:
От: Vlad Vasilevskiy

Hi,
If anyone who doing COM/ DCOM with Delphi can describe the main idea of
it in couple of words? I know that it is not too easy to describe it
shortly, but... I know all particulars, but can't see whole picture.
Delphi has nice part - TypeLibrary, but some Delphi gurus do not advise
to use it. But without TypeLibrary - I am lost in space of units,
Automation objects, forms and etc..
Sorry for English - not Russian, but I do not have Russian keyboard.
Sorry...
Best Regards,
Tatiana V.
Sydney




Ответить.

Ответ 1:



Вопрос 76:
От: gvm

Как дополнить стандартные окна Открыть/Сохранить пользовательскими
формами, которые реагировали на события выделения файла.


Ответить.

Ответ 1:



Вопрос 77:
От: Алексей Малиновский

Здраствуйте господа программисты!

Я тут столкнулся с проблемой: начал делать установочную программу с
помощью InstallShield for Delphi 5 и возникла проблема руссификации всех
сообщений выдаваемых готовой уст. программой. Я знаю точно, что как-то
можно руссифицировать готовую уст. программу, но вот как (я где видел
это дело, но вот где)?

Заранее спасибо за помощь...

С уважением, Алексей.


Ответить.

Ответ 1:



Вопрос 78:
От: Sir Antony

Привет, Дмитрий и все обитатели рассылки!

Проблема в следующем...
Данная процедура должна создавать в PageControl дополнительный TabSheet, а в нём
WebBrowser. Дык вот... TabSheet замечательно создаётся, а WebBrowser - нет.

> procedure TForm1.CreateTabs(SheetName, URL: string);
> begin
> inc(i);
> with PageControl1 do
> with TTabSheet.Create(Self) do
> begin
> PageControl:=PageControl1;
> Name:='TabSheet'+inttostr(i);
> Caption:='';

> with TWebBrowser.Create(Self) do
> begin
> Align:=alClient;
> Navigate(URL);
> end;

> Caption:=SheetName;
> Hint:=URL;
> end;
> end;

Если кто в курсе как это делается, прошу помочь мне. Pls!

З.Ы.: К письму прилагаю Unit1.pas and Uni1.dfm.

А вы знаете, что самая длинная кость у человека - бедренная, ее длина составляет
обычно 27.5% от роста человека

До встречи в эфире, Sir Antony.
14 марта 2001 г., 13:01:21



Ответить.

Ответ 1:



Вопрос 79:
От: Мелитопольская РГА

Как сделать так, что бы программа использующая BDE при перенесении
на другой компьютер где есть BDE но нет данного псевдонима при запуске
создавала такой псевдоним и спокойно продолжала работать.


Ответить.

Ответ 1:
Вот процедурка с комментариями.

procedure CreateAlias();
const
DlPs = 5;
var
wrstr,wrstr1 :string;
AParams: TStringList;
Psevdonm: array[1..DlPs] of string;
i : integer;

begin
//Заполним массив
Psevdonm[1] := 'TERMNNSI,NSI'; // имя,каталог
Psevdonm[2] := 'TERMNBASE,BASE';
Psevdonm[3] := 'TERMNTNL,BASE\TNL';
Psevdonm[4] := 'TERMNARH,ARH';
Psevdonm[5] := 'TERMNTELE,TELE';
// if not DirectoryExists(datapath) then begin
// createdir(datapath) ;
// end;
for i := 1 to DlPs do
begin
// Для начала проверим каталоги
wrstr1 := Copy(Psevdonm[i],Pos(',',Psevdonm[i])+1,Length(Psevdonm[i])-Pos(',',Psevdonm[i])+1);
if not DirectoryExists(wrstr1) then
begin
CreateDirectory(PChar(CurrntDir+'\'+wrstr1),nil);
end;

// Если нет псевдонима, то создадим или подправим
wrstr := Copy(Psevdonm[i],1,Pos(',',Psevdonm[i])-1);
if not Session.IsAlias(wrstr) then
begin
try
Session.AddStandardAlias(wrstr,wrstr1,'PARADOX');
Session.SaveConfigFile;
except
SaveTekJrn('ERR:Ошибка создания алиаса - '+wrstr);
Exit;
end;
end;
//Настроим алиас
AParams := TStringList.Create;
AParams.Add('PATH=' + CurrntDir+'\'+wrstr1);
Session.ModifyAlias(wrstr,AParams);
Session.SaveConfigFile;
// Освобождение списка
AParams.Free;
end;
end;



Вопрос 80:
От: evil


Привет, это Evil!

Я вот подписан на сабж не долго :(. И не знаю как с файломи в сети через
сабж работать. Есть это где, или ты писал уже. ХЕЛП.

Досвидания.
С уважением, Evil!

-=[PS]=-
mailto:evil@orel.ru <mailto:evil@orel.ru> мыль мне!!!
:))
http://www.xakep.ru <http://www.xakep.ru> читай нужное!!!
http://evilsoft.topcities.com <http://evilsoft.topcities.com> <<=
зайди сюда


Ответить.

Ответ 1:



Вопрос 81:
От: ION

Как вставить свой курсор из внешнего файла.


Ответить.

Ответ 1:



Вопрос 82:
От: Vmz

Уважаемые коллеги !
Не доводилось ли кому из STORED процедуры, прописанной в одной *.GDB
базы INTERBASE, обращаться к таблице, находящейся в другой *.GDB ?

С уважением, Владимир Михайлович.


Ответить.

Ответ 1:



Вопрос 83:
От: Мелитопольская РГА

Уважаемый Дмитрий Владимирович!

Большое спасибо за Ваш ответ. С помощью Вашей подпрограммы я смог
решить свою проблему.

Как сделать так, что бы программа использующая BDE при перенесении
на другой компьютер где есть BDE но нет данного псевдонима при
запуске
создавала такой псевдоним и спокойно продолжала работать.

К сожелению я не понял для чего нужны некоторые параметры и прошу
Вас объяснить их назначение и попросту убрал их из подпрограммы. Это
сработало и программа работает нормально, однако я не знаю чем мне это
грозит.

То что я убрал - выделено красным цветом.
procedure CreateAlias();
const
DlPs = 5;
var
wrstr,wrstr1 :string;
AParams: TStringList;
Psevdonm: array[1..DlPs] of string;
i : integer;

begin
<file://Заполним/> file://Заполним массив ---- совершенно не понял
Psevdonm[1] := 'TERMNNSI,NSI';
Psevdonm[2] := 'TERMNBASE,BASE';
Psevdonm[3] := 'TERMNTNL,BASE\TNL';
Psevdonm[4] := 'TERMNARH,ARH';
Psevdonm[5] := 'TERMNTELE,TELE';
// if not DirectoryExists(datapath) then begin
// createdir(datapath) ;
// end;
for i := 1 to DlPs do
begin
// Для начала проверим каталоги
wrstr1 :=
Copy(Psevdonm[i],Pos(',',Psevdonm[i])+1,Length(Psevdonm[i])-Pos(',',Psev
donm[i])+1);
if not DirectoryExists(wrstr1) then
begin
CreateDirectory(PChar(CurrntDir+'\'+wrstr1),nil);
end;

// Если нет псевдонима, то создадим или подправим
wrstr := Copy(Psevdonm[i],1,Pos(',',Psevdonm[i])-1);
if not Session.IsAlias(wrstr) then
begin
try
Session.AddStandardAlias('MyAlias',ExtractFilePath(ParamStr(0)),'PARADOX
');
Session.SaveConfigFile;
except
SaveTekJrn('ERR:Ошибка создания алиаса - '+wrstr);
Exit;
end;
<file://Настроим/> file://Настроим алиас
AParams := TStringList.Create;
AParams.Add('PATH=' + ExtractFilePath(ParamStr(0)));
Session.ModifyAlias(wrstr,AParams);
Session.SaveConfigFile;
// Освобождение списка
AParams.Free;
end;

И еще подскажите пожалуйста как из Delphi установить расширение для
принтера (например принтер настроен на 180 dpi а нужно поставить 360). А
также можно ли программно узнать Серийный номер(метка, том) винчестера,
процессора компа.

Заранее
благодарен!



Ответить.

Ответ 1:
Добрый день.

Psevdonm: array[1..DlPs] of string; //Кол-во псевдонимов

А остальное касается наличия конкретных путей(каталогов начиная от
текущего) для каждого псевдонима.

Psevdonm[3] := 'TERMNTNL,BASE\TNL'; //Сдесь TERMNTNL - имя псевдонима
//BASE\TNL - КАТАЛОГИ
//Это просто запись в журнал ошибки можно поставить MessageDlg
SaveTekJrn('ERR:Ошибка создания алиаса - '+wrstr);

Насчет принтера - это нужно читать доку по принтеру.


Вопрос 84:
От: Denis Kovaleff

Всем привет!
Очень прошу, киньте базовый проект для OpenGL-приложения. Самый минимум для
того, чтобы программа заработала. Например, как было в Pascal:
begin
end.

Или лучше так:
Program ex001;
Uses Crt;
Var s: string;
Begin
s:='Hello World!';
TextColor:=10;
WriteLn(s);
ReadLn
End.

Спасибо!

Денис.



Ответить.

Ответ 1:



Вопрос 85:
От: Denis Kovaleff

Здравствуйте!
Хочу использовать DirectX. Для этого, как узнал, нужен компонент
DelphiX. Подскажите, где его взять. Если у кого есть, скиньте на мыльцо
( dendyrec@pisem.net <mailto:dendyrec@pisem.net> ), а то выход в инет
только "почтовый".

Заранее благодарен.
DENdyRec


Ответить.

Ответ 1:



Вопрос 86:
От: Sergey V. Alpatov

Hello ,

Friday, March 16, 2001, 9:25:57 AM, you wrote:

ДВТ> Добрый день.

>> Можно ли средствами Delphi создать полупрозрачную форму?

ДВТ> Полупрозрачную форму создать можно ;-))
ДВТ> Я бы мог расписать полностью алгоритм, но раз задаешь такой вопрос, то
ДВТ> вряд ли сможешь реализовать алгоритм. Поэтому поищи какой-нибудь
ДВТ> компонент - наверняка есть, например на www.torry.net


ДВТ> ICQ : 89533941
ДВТ> mailto:Dtarasov@kms.dvgd.ru (МПС-*.mps)

Здравствуйте!
Если у Вас есть код этого алгоритма, не могли бы Вы его переслать мне
(в остальном разберусь :-))))?

--
Best regards,
Sergey mailto:asv@fangorn.ryazan.ru




Ответить.

Ответ 1:



Вопрос 87:
От: Alexander Pleshakov

Привет.

Как в Delphi 5 отправлять e-mail, не юзая почтовый клиент (Outlook и
пр.)?

Заранее благодарен.
Александр Плешаков.



Ответить.

Ответ 1:



Вопрос 88:
От: anton


Здраствуйте.
Скажите,я делаю прикол форматирования диска.Как мне написать процедуру
имитации форматирования диска?Чтобы звенел винт.И чтобы эта имитация была
связана с компонентом TGaude.

Антон.



Ответить.

Ответ 1:



Вопрос 89:
От: йЮКЮЬМХЙНБЮ хММЮ

Здравствуйте!
У меня вопрос насчет формирования отчетов при работе с Oracle. Сделать
просто запрос и по нему отчет QuickReport не удается, т.к. есть еще куча
вычислений и т.д. Удобно было бы записать результат этих преобразований
в таблицу, а уже по ней - отчет. Записывать каждую переменную в отчет не
хочется, хотя в моем случае возможен и такой вариант.
Вопросы:
1. Как создать таблицу Oracle в режиме выполнения программы, а потом ее
удалить?
2. Как вообще в таких случаях принято поступать?

Алина


Ответить.

Ответ 1:



Вопрос 90:
От: Dimon

Вообщем есть проблема, пишу прогу которая должна на форме иметь в
конкретних
ситуациях различное число компонентов (Edit, Label), вообщем то будет
маленький RAD,
проблема в том что мне не известно конечное количество етих компонентов,
принцып
построения такой:
БД со свойствами + процедурка создания. Внимание вопрос :) :
Вообщем необходимо че нить вроде ARRAY которому можно присвоить объект и
потом
в етой процедуре обрващаться к компонентам по их индексу, из БД брать
свойства .......

З.Ы.: Ответы жду от тех кто енто пытался сделать, потому как в теории
создания мы и сами,

с усами.
delphiV



Ответить.

Ответ 1:



Вопрос 91:
От: Sergey V. Grekov

Уважаемые Господа.
Вопрос такого плана : при работе с таблицами FOXPro c
помощью компонента TQuery при удалении записей они
помечаются как удаленные но физически остаются в БД
В книге Шумакова ПВ написано что запись должна немедленно
удалиться из ТБД.Может кто подскажет как из приложения паковать таблицы?
Заранее благодарен.
Греков С


Ответить.

Ответ 1:



Вопрос 92:
От: Dronny

У меня тут возникли проблемы с работой с MainMenu. Существует массив
строк, нужно его отобразить в виде подменю одного из пунктов меню
(MainMenu->Favorites->Files-><строки из массива>), при этом каждый
пункт должен иметь свойство onClick='MenuClick('+<имя пункта>+')'
для обработки клика.



Ответить.

Ответ 1:



Вопрос 93:
От: Алексей Малиновский

Здраствуйте Господа!

Хочу сделать SCREEN SAVER, и мне необходимо анализировать параметр
командной строки при загрузке программы. Если параметр не задан, то
проргамма ничего не загружает и закрывается.
Я делаю так (в файле проекта):

Application.Initialize;
case ParamStr(1)[1] of
'S': Application.CreateForm(TFormMain, FormMain);
'A': Application.CreateForm(TFormParams, FormParams);
end; // case
Application.Run;

но если параметр не задан пограмма выдаёт ошибку, типа Access violation!
:-(

Программисты подскажите, что делать (как правильно организовать
стркуткуру программы)?
Заранее спасибо.

С уважением, Алексей.


Ответить.

Ответ 1:



Вопрос 94:
От: "Кравец Станислав"

Здравствуйте! У меня вопрос: возможно ли блокировать Ctrl+Alt+Del в
WinNT?
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, 0, 0); работает только
под Win95/98.
Если знаете, ответьте скорее, пожалуйста, сроки поджимают. Заранее
благодарен.


Ответить.

Ответ 1:
Сам не пробовал, но основная идея такова - зацепить на Ctrl+Alt+Del
горячую клавишу и ничего по ней не делать:
KeyboardProc или SetWindowsHookEx из WinApi.



Вопрос 95:
От: Sam Savinov

Добрый день Дмитрий.
Почему у меня (я работаю в 5-м Delphi) при сохранении
больших проектов, пропадают события привязанные к компанентам
или формам. Напр. Form1 - событие "OnShow" я пишу к нему код.
Так вот, код остается, а в инспекторе привязки к нему с самой формы нет.
Привязываю по новой, а после "переоткрытия" привязки опять нет.
Тоже самое происходит и с "мемо" в которые текст был занесен в
процессе проектирования. Может заплатка какая нужна, или
еще чего? Помогите плз., а то я уже совсем расстроился.


SAM / sam@myportal.ru
http://www.myportal.ru
WELCOME TO
Team ComputerraRU: www.myportal.ru/team



Ответить.

Ответ 1:



Вопрос 96:
От: cinlena

Привет DTarasov,
Мне нужно написать почтовую программу. Пытаюсь использовать компоненту
SMTP. Пример из хелпа не работает. Если есть рабочий пример, подскажи
где взять или исходники подобных программ.


--
С уважением Лена
mailto:cinlena@mail.ru




Ответить.

Ответ 1:



Вопрос 97:
От: Mark Ermakov

Господа всезнающие программисты!
Подскажите пожалуйста, как осуществить вывод данных на LPT порт?
По моему в бейсиковой лексике это OUT [порт], [число] - а как в DELPHI?
Заранее благодарен.
Марк.
mark@newtel.lv


Ответить.

Ответ 1:
Начните с компоненты PrintDialog.



Вопрос 98:
От: Алексей Малиновский

Здраствуйте господа!

Создаю БД для InterBase с помощью DataBase Desktop, и при создании
определённой БД система выдаёт сообщение об ошибке: ""Invalid table
create request" и БД не создаётся!

Господа подскажите в чём проблема?
Заранее спасибо.
С уважением, Алексей.


Ответить.

Ответ 1:



Вопрос 99:
От: arni

Приветик!
Вопросик таков: в моей проге документы на печать выводятся DOSовским
способом (для скорости печати) через AssignFile(f,'lpt1'), при этом
контроля принтера из программы не происходит. Т.е. не известно
включен/не включен, работает/остановлен паузой принтер - соответственно
прога повисает при остановке принтера без возможности корректно снять
ее. Как запрограммировать хотябы событие недоступности печати или
остановки ее?
Спасибо.


Ответить.

Ответ 1:



Вопрос 100:
От: ==MAX==

Зравствуйте!

1. Как в Дельфи получить список всех запущенных приложений?
2. Как нарисовать что-нибудь (какие-нибудь примитивы) на Desktope, а
потом стереть их?

Спасибо.




Ответить.

Ответ 1:




6. В следующем выпуске.
-----------------------
В следующем выпуске будем продолжать начатое. Хотя, думаю
не очень долго. Приводить описание всего API :-)) .





Если Вы хотите как можно скорее получить ответ на свой вопрос, то
укажите в теме письма - delphiV,иначе письмо будет прочитано значительно
позже, если же у вас есть предложения то в теме письма укажите delphiP.

Для интересующихся - немного о себе. Работаю на
железнодорожном транспорте ведущим программистом.
Основные мои разработки это сбор и доставка клиентам
информации о вагонах и поездах: где находится(по России),
куда едет. В связи с этим программировал для e-mail,Socket,БД,ISAPI.

За сим прощаюсь - скорых Вам и качественных программ.

Автор рассылки - Дмитрий.
ICQ - 89533941.

ВСЕ ВОПРОСЫ СПРОСИТЬ ПРЕДЛОЖИТЬ АРХИВЫ СКОЛЬКО НАС



http://subscribe.ru/
E-mail: ask@subscribe.ru
Поиск

В избранное