Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2007, 20:44   #1
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию запуск програмы

сделал прогу и нужно чтобы писало сообщение когда заприщается запуск копии:

program MusON;

uses
only_one,
Forms,
Dialogs,
inifiles,
SysUtils,
Main in 'Main.pas' {Form1},
Unit2 in 'Unit2.pas' {Creators},
Playlist_ in 'Playlist_.pas' {PlayList},
reg in 'reg.pas' {Registration},
SysInfoS in 'SysInfoS.pas' {Infos},
Shos in 'Shos.pas' {MaxVideo},
Option in 'Option.pas' {OPTIONS},
file_options in 'file_options.pas' {File_option};

{$R *.res}
const
UniqueString = 'MyProgramMutex';
{Может быть любое слово. Желательно латинскими буквами.}

var f:tinifile;
d:boolean;
begin
if not init_mutex(UniqueString) then
begin
f:=f.Create(extractfilepath(paramst r(0))+'ControlINI\Options.ini');
d:=f.ReadBool('Run','Copy',false); //тут читаем позволяется ли запускать копию
if d=false then
begin
showmessage(' ') //вот тут это сообщение..
exit; {Выходим до инициализации, если мьютекс уже есть}
end;
f.Free;
end;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TOPTIONS, OPTIONS);
.....
end.

Дело в том что программа не хочет выдавать сообщение а выбивает ошыбку с какимто адресом в памяти..
Что подскажыте? нужно чем побыстрее...
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 02.06.2007, 23:18   #2
Wolfheart
Любитель
Пользователь
 
Регистрация: 29.05.2007
Сообщений: 16
По умолчанию

Возможно, ошибка в процедуре init_mutex ? Она не описана здесь, потому не могу сказать наверняка.
Хочешь рассмешить Бога, расскажи ему о планах на завтра…
Wolfheart вне форума Ответить с цитированием
Старый 03.06.2007, 15:18   #3
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

вот модуль который использует эта процэдура, но писал не я ... такчто помогите розобратся если в нём
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 03.06.2007, 15:18   #4
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

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

unit Only_One;

interface

function Init_Mutex(mid: string): boolean;

implementation

uses Windows;

var
mut: thandle;

function mut_id(s: string): string;
var
f: integer;
begin
result := s;
for f := 1 to length(s) do
if result[f] = '\' then
result[f] := '_';
end;

function Init_Mutex(mid: string): boolean;
begin
Mut := CreateMutex(nil, false, pchar(mut_id(mid)));
Result := not ((Mut = 0) or (GetLastError = ERROR_ALREADY_EXISTS));
end;

initialization
mut := 0;
finalization
if mut <> 0 then
CloseHandle(mut);
end.
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 03.06.2007, 16:02   #5
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

запрет на запуск можно реализовать и без файлов!
Код:
function Init_Mutex(mid: string): boolean;
begin
Mut := CreateMutex(nil, false, pchar(mut_id(mid)));
Result := not ((Mut = 0) or (GetLastError = ERROR_ALREADY_EXISTS));
end;
если функция возвратила false, то приложение уже запущено и надо выйти

Последний раз редактировалось rpy3uH; 03.06.2007 в 16:04.
rpy3uH вне форума Ответить с цитированием
Старый 03.06.2007, 16:11   #6
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
запрет на запуск можно реализовать и без файлов!
Код:
function Init_Mutex(mid: string): boolean;
begin
Mut := CreateMutex(nil, false, pchar(mut_id(mid)));
Result := not ((Mut = 0) or (GetLastError = ERROR_ALREADY_EXISTS));
end;
если функция возвратила false, то приложение уже запущено и надо выйти

вобщем мне нужно чтобы допускалось запускание нескольких копий програмы и наоборот, и это должно читатся с ini-файла... вот и всё...
ПЛЛИИИЗ напишы то что мне нужно использовать...ато писал не я а розбераться времени нету... екзамены....
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 04.06.2007, 17:45   #7
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

Сообщение от rpy3uH
запрет на запуск можно реализовать и без файлов!

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

ВОБЩЕМ, КАК ОРГАНИЗОВАТЬ ЧТЕНИЕ ИЗ ИНИ-ФАЙЛА ЧТОБЫ НЕ ВЫБИВАЛО ОШЫБОК???
Но если это не в этом проблема тогда я незнаю в чём...
у кого получится пожалуста пришлите как зделали, или помогите розобратся с этим
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 04.06.2007, 18:33   #8
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Объект TIniFile, который ты только объявил еще не создан, и уж тем более он не может создать сам себя
Цитата:
f:=f.Create(extractfilepath(paramst r(0))+'ControlI NI\Options.ini');
должно быть
f:=TIniFile.Create(extractfilepath( paramstr(0))+'ControlI NI\Options.ini');

Может есть ещё ошибки, лень разбираться =)
--
И я тоже не доганяю, зачем мудрить с файлами?

-- упд 2
Если уж пользуешься TApplication то
Код:
...extractfilepath(paramstr(0))...
можно заменить на extractfilepath(application.exename ) (так красивее )

-- упд 3
Application.CreateForm(TOPTIONS, OPTIONS); явно не главная форма, и все формы, что идут за ней, лучше создавать и уничтожать динамически, когда они будут нужны, программа будет намного меньше памяти кушать
пыщь

Последний раз редактировалось JTG; 04.06.2007 в 18:42.
JTG вне форума Ответить с цитированием
Старый 04.06.2007, 20:31   #9
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

зачем мучиться с ini файлами,используй простой файл и держи в нём только одну строку в которой указано можно ли запускаться
rpy3uH вне форума Ответить с цитированием
Старый 05.06.2007, 10:48   #10
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Ну про ини-файлы, думаю, уже всё ясно

Цитата:
зачем мучиться с ini файлами,используй простой файл и держи в нём только одну строку в которой указано можно ли запускаться
НЕЛЬЗЯ выполнять проверку, запущена ли уже программа, при помощи временных файлов вообще: что будет, если программа некоррекно завершится, комп перезагрузится, и т.д. и на диске останется файл - при следующем запуске программа будет думать, что уже запущенна.
пыщь
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как открывать песню при ее перетаскивании на ярлык програмы SeRhy Общие вопросы Delphi 2 14.03.2008 18:50
Локализация програмы neo_m Помощь студентам 4 10.03.2008 15:24
Как очистить Bitmap в ходе выполнения програмы SeRhy Помощь студентам 1 06.12.2007 21:47
Очень нужно сделать 2 програмы!!! Help !!! Помогите !!! Nazarik Помощь студентам 7 24.02.2007 01:51