← Март 2001 → | ||||||
1
|
3
|
4
|
||||
---|---|---|---|---|---|---|
5
|
6
|
7
|
8
|
10
|
11
|
|
12
|
13
|
14
|
15
|
17
|
18
|
|
19
|
20
|
21
|
22
|
24
|
25
|
|
26
|
27
|
28
|
29
|
31
|
За последние 60 дней 2 выпусков (1-2 раза в 2 месяца)
Сайт рассылки:
http://www.interface.ru, www.itshop.ru
Открыта:
16-01-2001
Адрес
автора: comp.soft.win.mydelphi-owner@subscribe.ru
Статистика
-3 за неделю
Проблемы и решения в Delphi #10
Проблемы и решения в 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 |
|
В избранное | ||