Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

Есть ли способ   Найти похожие ветки 

 
Daniel   (2003-10-19 12:31) [0]

Допустим, что программа, будет запускаться последовательно несколько раз. Можно ли, например, подсчитать в программе, сколько раз она уже запустилась? Понимаю, 100% метода не существует, но интересно... есть ли более-менее надежный метод? (без использования жесткого диска, естественно).


 
VID   (2003-10-19 12:37) [1]

Если цепочка запусков программы не будет прервана перезагрузкой или выключением компа, то может ещё и есть какая то возможность хранить integer-значение в ОЗУ, как это реализовать и возможно ли вообще я не знаю, слово за теми кто знает.
но если же ты и после перезагрузки/выключения захочешь продолжить счётчик, то единственное что остаётся программме, это спросить у пользователя, сколько раз она уже загружалась ;))


 
Ihor Osov'yak   (2003-10-19 12:44) [2]

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


 
Daniel   (2003-10-19 12:52) [3]

Ihor Osov"yak © (19.10.03 12:44) [2]

Програ консольная. Доступа к WinAPI нет. А вообще ограничиться функциями ANSI C. Т.е. можно ли надеяться, что программу при очередном запуске "поместят" в одно и тоже место в памяти? Естественно, при условии, что в перерывах другие приложения не запускаются.

Например:

program LaunchCounter;
...
var
N: Integer;
...
begin
Inc(N);
writeln(N);
end.


Мечты, конечно.... но какова вероятность, что такой метод сработает?


 
HolACost!   (2003-10-19 13:12) [4]

Вероятноть Есть всегда, но это не метод - а фантазия...
Вопрос - зачем?
Что значит доступа к выньапы нет?


 
Ihor Osov'yak   (2003-10-19 13:19) [5]

Нет такого понятия "одно и тоже место в памяти" для win32.. Каждая win32 задача выполняется в изолированном виртуальном адресном пространстве.. Которое не существовало до запуска приложения. И в котором, следовательно, ничего не может быть от "прошлых" жизней..

> Доступа к WinAPI нет.

Это как?

> А вообще ограничиться функциями ANSI C.

Ну, во первых, форум немного не тот.. Во вторых - "функциями ANSI C" - это намек на платформонезависимость.. А задачу вы ставите вполне платформозависимую.. Не пойдет так..


 
blackman   (2003-10-19 13:22) [6]

Каждый должен оставить свой след в реестре... :)


 
Daniel   (2003-10-19 14:35) [7]

Но ведь виртуальное адресного пространство размещается в памяти, которая отже имеет свою "глобальную" адресацию. И размещение этого "виртуального" адр. пр-ва (далее ВАП)осуществляется определенным алгоритмом. Так вот: будет ли мое ВАП размещаться по одному и тому же "глобальному" адресу?


 
VID   (2003-10-19 15:51) [8]

to blackman: который на винчестере ;)


 
Иван Шихалев   (2003-10-19 16:04) [9]

При перезагрузке, особенно - при холодной, вся оперативная память очищается. Писать в CMOS - а нафига? В общем - зря вы так ЖД не любите...


 
NightAngel   (2003-10-19 22:40) [10]

> Daniel (19.10.03 14:35) [7]

Вашу задачу можно попытаться решить с помощью драйвера, загружающегося при старте OS. С этим драйвером и "общаться" из Вашего приложения, а в нём реализовать счётчик запусков (запустили приложение - сообщили это драйверу, он инкрементирует счётчик, нужно определить сколько раз запускалось приложение - обращаетесь к драйверу, возвращается значение счётчика), но это будет работать только до перезагрузки. Есть ещё несколько вариантов, но они уж совсем дикие. А так, как представляете себе Вы, эту задачу не реализовать (у Вас, по моему, очень смутные представления о Flat модели памяти).

> Так вот: будет ли мое ВАП размещаться по одному и тому же "глобальному" адресу?

Никаких глобальных адресов нет. Есть несколько сегментов, а всё остальное строится на страничной адресации, даже переключение контекстов. По каким физическим адресам будут спроецированы эти страничные фреймы знает только OS (зависит от многих факторов, которые для каждой конфигурации индивидуальны). Почитайте что-нибудь о страничной организации памяти для процессоров начиная с i386.


 
Palladin   (2003-10-19 23:36) [11]


> Програ консольная. Доступа к WinAPI нет.

мощное заявление... может имелась в виду не консольная, а DOS программа?


> NightAngel © (19.10.03 22:40) [10]

Слишком сложно. Не нужно пугать :) Достаточно написания сервиса.

Да и в конце концов, кто мешает использовать для хранения счетчика обычные или mapped файлы.


 
Ihor Osov'yak   (2003-10-20 00:19) [12]

2 [11] Palladin © (19.10.03 23:36)

Невнимательно читаем постатовку задачи :-):
> (без использования жесткого диска, естественно).

Наверно без флоппиков также..

Ну, а драйвера, сервис - одного плана решения - общий недостаток - нужно дополнительный программный модуль.. Поэтому все же настаиваю на своем предложении - хранение счетчика через атом на постоянно существующем окне, например десктопа, - см. SetProp.. Правда, здесть противоречие дополнению к постановке - "Доступа к WinAPI нет" :-)

2 [10] NightAngel © (19.10.03 22:40)

А вот, если у Вас есть время и воодушевление, то о "диких" способах было бы интересно послушать (хотя бы в 2-3 словах).. Так, в плане образования..


 
Palladin   (2003-10-20 02:19) [13]


> Ihor Osov"yak © (20.10.03 00:19) [12]

Да, не внимателен я.
Мне кажется замечание "(без использования жесткого диска, естественно)" из разряда "Доступа к WinAPI нет".
Религия чтоли не позволяет :)
Согласен, атом при такой постановке задачи - нормальный выбор...


 
kaif   (2003-10-20 02:26) [14]

ВОТ У МЕНЯ ОЧИТКА!!!!
УЖЕ В ПЯТЫЙ РАЗ ЧИТАЮ САБЖ КАК
Есть ли способ "оставлять" информацию в памяти между за Кусками?


 
Reindeer Moss Eater   (2003-10-20 08:46) [15]

Есть ли способ "оставлять" информацию в памяти между запусками

Если только оставлять, - то легко и просто. Распредели память в куче и не освобождай при завершении работы.


 
Е-Моё имя   (2003-10-20 08:53) [16]


> Есть ли способ "оставлять" информацию в памяти между заКусками?

не к добру это.. =)


 
MBo   (2003-10-20 08:58) [17]

заведи Memory-Mapped File в памяти (Dword(-1) вместо дескриптора файла при создании)



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.034 c
1-41193
sagchat
2003-11-02 12:37
2003.11.13
не роботает под XP


7-42185
Speaker
2003-08-29 10:29
2003.11.13
Перенос данных в реестре


1-41332
Anonim-777
2003-10-28 21:16
2003.11.13
Как сделать массив обьектов?


1-41159
vvvaaa
2003-11-03 08:59
2003.11.13
Как изменить ScrollBar?


1-41407
lamer666
2003-10-29 17:44
2003.11.13
Как спрятать форму при открытии?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский