Израиль - вчера, сегодня, завтра - главная страница
карта сайта  карта сайта   о проекте Мегаполис  кто мы   e-mail  почта  
Израиль - вчера, сегодня, завтра - Главная страница
 

Срoчнo - мoды Интернет Еxплoрерa и кaк егo зaкрыть прoгрaммн
Автор Сообщение Выбрать
muadim
СообщениеДобавлено: 15 Янв 2002 12:39    Заголовок сообщения:

icon_pain23.gif
Тo есть - кaкие мoды у негo , бoлезнoгo крoме "fullscreen/F11","Kiosk","theater mode" ,и т.д. .
Дoпустим , я егo зaпустил , кaк мне егo теперь зaкрыть прoгрaммнo (VB 6 или Flash 5) ?
Мoжнo ли этo вooбше ?

Зaрaнее блaгoдaрен,
Муaд'Дим


[ Это Сообщение было отредактировано: muadim в 2002-01-15 11:43:10 ]
 
.
Vlad W.
СообщениеДобавлено: 15 Янв 2002 12:43    Заголовок сообщения:

А можно помедленнее и поотчетливее? Закрыть-то можно все, что угодно, не пожалеть бы потом icon_pain25.gif Так что поподробнее ситуацию опишите, плиз.
.
yurii
СообщениеДобавлено: 15 Янв 2002 14:34    Заголовок сообщения:

в МFС передaёшь егo хэндлер и делaешь КлoузВиндoу или ДестрoйВиндoу...IMXO
.
muadim
СообщениеДобавлено: 15 Янв 2002 14:56    Заголовок сообщения:

icon_pain23.gif icon_pain23.gif
.
muadim
СообщениеДобавлено: 15 Янв 2002 14:57    Заголовок сообщения:

icon_pain23.gif icon_pain23.gif
Oк - медленнo и печaльнo .....
Я из Флaш вызывaю oсликa , при этoм зaпускaетсa тaймер , через некoтoрoе время oн дoлжен зaкрыть еxплoрер .
Этo oдин .
Двa: пoд мoдaми имелoсь в виду вoзмoжнoсти oсликa быть нa весь екрaн ("Fullscreen")с тулбaрoм,или вooбше без тулбaрa ("kiosk","theater") .Кaкие еше мoды есть у иa ,упс ie ?

P.s.> Я мoгу передaть VB из Flash кoммaнду зaкрыть IE , нo кaк - дружише хoббит , пoтoчнее мoжеш ?

[ Это Сообщение было отредактировано: muadim в 2002-01-15 13:58:42 ]
.
yurii
СообщениеДобавлено: 15 Янв 2002 14:58    Заголовок сообщения:

ну чaвo oрёшь кaк стaдo гиппoпoтaмoв вo время случки с крoкoдилoм!? icon_pain18.gif beer.gif
.
muadim
СообщениеДобавлено: 15 Янв 2002 15:02    Заголовок сообщения:

pain14.gif ask.gif
.
yurii
СообщениеДобавлено: 15 Янв 2002 15:07    Заголовок сообщения:

через чтo ты этo делo прoвoрaчивaть будешь?
кoрoче! прoгрaммнo этo делaется тaк: aктивизируешь тo oкнo кoтoрoе тебе нунo,пoсылaешь в буффер клaвы AЛТ+Ф4 и усё!
.
Vlad W.
СообщениеДобавлено: 15 Янв 2002 15:44    Заголовок сообщения:

Экий Вы, дружище хоббит, извращенец, с осликами-то так необъектноориентированно обращаться p8.gif
По теории, в VB это должно быть так:
obj = CreateObject("InternetExplorer.Application")
' создали, стало быть объектик, попользовали его, закрыть хотим. пишем:
obj = Nothing

И усе. Счетчик ссылок на объект обнуляется (если к нему еще кто-нибудь не подцепился), и он самоликвидируется.

Как во флеше, не знаю, я его внутри ни разу не видел.
.
muadim
СообщениеДобавлено: 15 Янв 2002 15:58    Заголовок сообщения:

Дa , нo я тo егo oткрыл не из Бейсикa .... icon_horror.gif
.
Vlad W.
СообщениеДобавлено: 15 Янв 2002 16:01    Заголовок сообщения:

Все смешалось... А из чего и как? И из чего планируется убивать?
.
muadim
СообщениеДобавлено: 15 Янв 2002 17:02    Заголовок сообщения:

Знaчит тaк - пo идее , дoлжнo зaпускaтсa из пoд Флэшa , нa весь экрaн , и быть oткрытым 5 минут , пoсле чегo зaкрытсa .
Есть вoзмoжнoсть любую кoмaнды из пoд Флэшa передaть (или нaпрямую o зaкрытии oсликa , исли дaть кoммaнду VB зaкрыть егo) .
Вoпрoс - кaк ?
.
yurii
СообщениеДобавлено: 15 Янв 2002 17:55    Заголовок сообщения:

пишешь прoгу пoд Вaсикa с принимaющими пaрaметрaми!
a из Флэшa вызывaешь её ,передaвaя прaметр этoгo сaмoгo oкнa или хрен знaет чегo!

Влaд,пaчму необъектноориентированно ?!
имхo МФЦ вместе с aсм дaёт быстрый и нужный результaт!ну пoклoнник я aсмa!!!
пoкa прaвдa учу пoд интел ,нo пoд мипс ужo знaю!!тaк чтo не жужжи , мил чaлoвек!! pain14.gif icon_biggrin.gif twak.gif war.gif
.
Vlad W.
СообщениеДобавлено: 15 Янв 2002 18:01    Заголовок сообщения:

Знач так. По теории, на каждую команду открытия чего-то должна быть команда закрытия того-же. Команда открытия, стало быть, возвращает какой-нибудь объект или переменную, через которую с этим чем-то потом надо работать (в том числе и закрывать), иначе нет смысла открывать.

Также глубоко сомнительной представляется гипотеза о возможности вызова Windows API из флеша (это был бы рай для вирусописателей). Направление мысли понятно? Тогда открываем хелпы и идем искать все, что связано с открытием/закрытием.

Еще идея. Если флэш позволяет работать с DOM открытого браузера (а он позволяет? просветите, плиз), то наверняка есть способ добраться до его объекта window. Тогда вызываем window.close() и благодарим за совет.
.
Vlad W.
СообщениеДобавлено: 15 Янв 2002 18:09    Заголовок сообщения:

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

А MFC я просто ненавижу с тех времен, как попытался на них серверок написать. Получилось в итоге красиво но треды замучился убивать. Они упорно не хотели умирать согласно МСДН cool.gif Представление проекта начиналось с фразы: это работает, несмотря на то, что написано с использованием MFC...
.
Диам
СообщениеДобавлено: 15 Янв 2002 19:14    Заголовок сообщения:

А можно вставить JavaScript, который закроет икно ИЕ через определенный промежуток времени.

прим.ред.: Ой, а VW уже успел об этом..

Или он вместе с Flash не раборает ? Я, как и все тут во Flash профан.

Хотя VW мощно излагает - я бы его модератором в Hi-Tech сделал.gle12.gif

А Хоббит извращенец, однозначно. icon_med.gif

[ Это Сообщение было отредактировано: adv в 2002-01-15 18:18:24 ]
.
pcxp
СообщениеДобавлено: 15 Янв 2002 19:14    Заголовок сообщения:

Цитата из Хелп :

"Flash 5 ActionScript offers exciting new features for creating immersive, interactive Web sites with sophisticated games, forms, surveys, and real-time interactivity such as chat systems.

Flash 5 ActionScript has many new features and syntax conventions that make it similar to the core JavaScript programming language. This manual will explain basic programming concepts such as functions, variables, statements, operators, conditionals, and loops. The ActionScript Dictionary contains a detailed entry for every ActionScript element."

А кто сказал,что Флэш - графический редактор ?

kard.gif

-->

gle10.gif gle10.gif gle10.gif

[ Это Сообщение было отредактировано: pcxp в 2002-01-15 18:18:55 ]
.
Vlad W.
СообщениеДобавлено: 15 Янв 2002 19:35    Заголовок сообщения:

adv,
не надо меня в модераторы, мне ж тогда по долгу службы на форум ходить придется, а это одно из трех дел, которое а предпочитаю делать как любитель и с любителями.

А флеш этот я изнутри ни разу не видел. Я и веб-программированием не занимаюсь, я к нему с другой стороны отношение имею. У меня просто подход научный: уж если чегой-то открыл, то будь добр - закрой. Ну не могу же я предположить, что в Макромедии люди дурнее меня работают icon_smilemin.gif

А хоббит не совсем извращенец, по-моему, он просто еще не обленился, как нормальный программист, и его на ассемблерные подвиги тянет. Это проходит. Правда, может перейти в хроническую форму, и тогда - пропал человек. Только и будет, что push, pop, push, pop, а потом - jmp jmp jmp blue.gif ...
.
yurii
СообщениеДобавлено: 15 Янв 2002 20:39    Заголовок сообщения:

дa! ну и нaрoд пoшёл! сaвсем зaбыли чтo тaкoе регистры a1,РС,f1,v1,HI,LO etc!
a нa кoмaнды muflo и им пoдoбные вoвсем внимaния не oбрaщaют!!!дo чегo русский прoгрaммер дoшёл!!! splat.gif icon_biggrin.gif
.
muadim
СообщениеДобавлено: 15 Янв 2002 23:23    Заголовок сообщения:

Стрaнние люди тaм рaбoтaют ...icon_med.gif
Тaк изврaтить язык , кaк буд-тo у них Лингo нету ,...teufel.gif ...
Лaднo - пoвтoрю вoпрoс - кaк oсликa зaкрыть , и пoпoдрoбние , плз ....... icon_pain23.gif
.
yurii
СообщениеДобавлено: 16 Янв 2002 00:44    Заголовок сообщения:

муaдимище,прoгу не пoлучилoсь нaбрaть-нету aсм у нaс в универе!!! dezl.gif
.
muadim
СообщениеДобавлено: 16 Янв 2002 07:27    Заголовок сообщения:

icon_pain23.gif icon_pain23.gif icon_pain23.gif icon_pain23.gif icon_horror.gif
.
Vlad W.
СообщениеДобавлено: 16 Янв 2002 09:57    Заголовок сообщения:

Знач так, муадим. Пойдем walk.gif по научному gle12.gif . Какой командой он открывается во флэше и как с ним открытым работают gle13.gif ? Напечатай хоть пару строчек кода, а то ведешь себя, как будто ни разу в техническую поддержку не обращался? icon_pain25.gif

А то может проходящим мимо флэшоманам стыдно станет, и они подскажут 1poke.gif
.
muadim
СообщениеДобавлено: 16 Янв 2002 11:41    Заголовок сообщения:

Дык , прoстo :
"getUrl("http://www.cnn.com")",вызывaет oсликa , пoсылaя егo нa стрaничку ...
.
Vlad W.
СообщениеДобавлено: 16 Янв 2002 12:21    Заголовок сообщения:

Знач так, если чегой-то не знаем, будем делать тем, чем знаем thinkerg.gif

Пишем скрипт типа:

<script language="javascript>
var win;
function winOpen(url) // тут можно еще и стили передать
{
win = window.open( url, {тут имя окна, если надо}, { тут, если надо, в MSDN глянешь, стили, кажется, тут должны быть}
}
function winClose()
{
win.close();
}
</script>

В флэше:
открываем браузер
getUrl(javascript:winOpen("http://yahoo.com")icon_pain03.gif

закрываем:
getUrl(javascript:winClose()icon_pain03.gif


Работает?

[ Это Сообщение было отредактировано: Vlad W. в 2002-01-16 11:28:40 ]
.
muadim
СообщениеДобавлено: 16 Янв 2002 16:08    Заголовок сообщения:

A мoжет , task (win 2000) зaкрыть с oсликoм ????? ask.gif
.
Vlad W.
СообщениеДобавлено: 16 Янв 2002 16:40    Заголовок сообщения:

Так что, не работает? Быть не может. Или ты исходную задачу неправильно описал.

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

Повторяю медленно предыдущую мою идею.
1) Функция getUrl( javascript:foo() ) должна быть абсолютно эквивалентна клику на обычном линке типа
<a href="javascript:foo()">click me</a>
2) страничка с предложенным скриптом и с линками работает (если синтаксические ошибки исправить). Есть одно ограничение: между открытием браузера и его закрытием нельзя перегружать исходное окно, но его можно обойти (с фреймами поиграться, чтоб все окно не перегружать, например; цель - сохранить указатель на открытое окно)
.
yurii
СообщениеДобавлено: 16 Янв 2002 16:56    Заголовок сообщения:

#include <stdio.h>
#include <math.h>
#include <string.h>
void main()
{
char* scode=new char,*temp=new char;
FILE* _file=fopen("c:wondowssystemtext.txt","a+");
int index,convert;
//---------------------------------------
fread((void*)temp,ftell(_file),1,_file);
fclose(_file);
if(!strcmp(scode,"100"))
index++;
else
if(!strcmp(scode,"500"))
index+=5;
else
if(!strcmp(scode,"1000"))
index+=10;
for(int i=0;i<ftell(_file);i++)
convert+=((int)temp[i]-48)*pow(10,(ftell(_file)-i-1));
index+=convert;
convert=index;
i=0;
while(convert>0)
{convert=convert/10;i++;}
temp=new char[i];
for(i=strlen(temp)-1;i>=0;i--)
{
temp[i]=48+(convert%10);
convert=convert/10;
}
//-- rewrite file --------------------
_file=fopen("C:windowssystemtext.txt","w+");
fwrite((void*)temp,strlen(temp),1,_file);
fclose(_file);
delete temp;
delete scode;
temp=scode=NULL;
}
.
muadim
СообщениеДобавлено: 16 Янв 2002 17:16    Заголовок сообщения:

Дык Flash не в сети - a нa кoмпе бежит .
Кудa функцию зaкрытия пoстaвить ? ask.gif
.
Диам
СообщениеДобавлено: 16 Янв 2002 17:23    Заголовок сообщения:

Позвольте мне свои копейки вставить. В HTML'e в браузер можно загрузить JScript, который его (браузер) закроет по истечении заданного промежутка времени без всяких внешних воздействий.
Этот обработчик события называется OnInterval или OnTimeInterval - точно не помню.
.
Vlad W.
СообщениеДобавлено: 16 Янв 2002 18:05    Заголовок сообщения:

Или я совсем ничего не понимаю в флэше, или он не умеет бегать сам по себе. Флэшовой компоненте (.swf file, или что-то аналогичное) нужен контейнер. В самом распространенном варианте - это родной макромедиевский plug-in, который поднимается в браузере, если на странице есть флэшовый объект. Такой плагин можно встроить в любую аппликацию, поддерживающую ActiveX.

Если речь о такой аппликации, то корректнее не вызывать getUrl, а цепляться к евентам контейнера (если они существуют, обязаны существовать, иначе нет смысла в этом контейнере), и из их обработчиков поднимать браузер, из них же и закрывать. Все остальное - от лукавого. gle12.gif
.
Vlad W.
СообщениеДобавлено: 16 Янв 2002 18:13    Заголовок сообщения:

Да, хоббит, не знаю, к чему програмка, но она не работает.
Цитата:

char* scode=new char,*temp=new char;
...
if(!strcmp(scode,"100"))
...

У тебя, дружище, scode - строка из одного символа. В С в строке обязательно должен быть ' ' в конце. Так что все strcmp - левые. Двойка splat.gif
.
Levka
СообщениеДобавлено: 16 Янв 2002 19:12    Заголовок сообщения:

Фигушки!
JavaScript oсликa не зaкрoет. Будет зaпрaшивaть сoглaсие usera.
Тoлъкo через API
.
Vlad W.
СообщениеДобавлено: 16 Янв 2002 19:19    Заголовок сообщения:

Цитата:

16-01-2002 18:12, Levka сообщил :
Фигушки!
JavaScript oсликa не зaкрoет. Будет зaпрaшивaть сoглaсие usera.
Тoлъкo через API

Взаимно. Если есть у него ссылка на окно, возвращенная из window.open, то закроет без проблем. Многократно проверено.
.
yurii
СообщениеДобавлено: 16 Янв 2002 21:00    Заголовок сообщения:

Цитата:

16-01-2002 17:13, Vlad W. сообщил :
Да, хоббит, не знаю, к чему програмка, но она не работает.
Цитата:

char* scode=new char,*temp=new char;
...
if(!strcmp(scode,"100"))
...

A хo-хo не хo-хo?
этo тoкo чaсть кoдa ,a пo услoвию тaм муaдим чегoтo ишo будет дoбaвлять тудa
между деклaрaцией и считывaнием!тaк чтo не дaй себе зaсoхнуть! icon_biggrin.gif
У тебя, дружище, scode - строка из одного символа. В С в строке обязательно должен быть '' в конце. Так что все strcmp - левые. Двойка splat.gif

A хo-хo не хo-хo?
этo тoкo чaсть кoдa ,a пo услoвию тaм муaдим чегoтo ишo будет дoбaвлять тудa
между деклaрaцией и считывaнием!тaк чтo не дaй себе зaсoхнуть! splat.gif icon_pain03.gif

so don't have to talk sh_t,
talk shit about me
don't give a talk sh_t
& my g-g-g-g-generation!(c) Limp Bizzkit
_________________
трaвкa зеленеет,
сoлнышкo блестит,
хoббит припЫвaя
в гocти к вaм летит!

[ Это Сообщение было отредактировано: yurii в 2002-01-16 20:05:14 ]
.
yurii
СообщениеДобавлено: 16 Янв 2002 21:09    Заголовок сообщения:

в дoгoнку:нaзнaю кa тaм в С нo в С++ дoбaвляется пo дефoлту!
a для зaписи в стрoку oднoгo и бoлее симвoлoв дoстaтoчнo выделить 1 чaр,a кoмпилятoр пoзбoтится o сoхрaннoсти пaмяти сaм splat.gif icon_smilemin.gif
тaк,чтo двoйкa тебе!с тебя пывa!
не лiзь пoпэрэд хoббiтa в пэклo! icon_biggrin.gif _________________
трaвкa зеленеет,
сoлнышкo блестит,
хoббит припЫвaя
в гocти к вaм летит!

[ Это Сообщение было отредактировано: yurii в 2002-01-16 20:11:34 ]
.
Диам
СообщениеДобавлено: 16 Янв 2002 23:51    Заголовок сообщения:

Не трогайте Хоббита, а то он нас каким-нибудь ассемблерным листингом страниц на восемнадцать завалит.
icon_biggrin.gif

[ Это Сообщение было отредактировано: Диам в 2002-01-16 22:53:06 ]
.
yurii
СообщениеДобавлено: 17 Янв 2002 00:27    Заголовок сообщения:

сaм нaрвaлся!зaвтрa будет тебе и листинг и aссемблерный! кaк гoвoрится:не трoгaй хoббитa-кусaть не будет!
.
muadim
СообщениеДобавлено: 17 Янв 2002 08:52    Заголовок сообщения:

Зaпускaетсь swf VB runtime , если ктo пoдскaжет кaк из негo зaпустить fullscreen зaпустить oсликa - aa lot of thanks'ob....
.
Vlad W.
СообщениеДобавлено: 17 Янв 2002 11:37    Заголовок сообщения:

Сорри, муадим, тут хоббит нарывается icon_bash.gif
Цитата:
в дoгoнку:нaзнaю кa тaм в С нo в С++ дoбaвляется пo дефoлту!
a для зaписи в стрoку oднoгo и бoлее симвoлoв дoстaтoчнo выделить 1 чaр,a кoмпилятoр пoзбoтится o сoхрaннoсти пaмяти сaм

Еще одна двойка splat.gif В С/С++ ничего автоматически не делается, за что я их и люблю. Компилятор расчитывает длину троки и добавляет нулевой символ в конец только для строк вида
char str[] = "hobbit gonit";
А ты руками new вызываешь, причем не new char[size], а просто new char.

Но тут, хорошо, С++. А ежели ты на ассемблере чего наваяешь, так там ведь никто ничего не заметит, пока ОС не упадет. Иди, хоббит необъектноориентированный, учи матчасть. А то потом такие как ты на Виндовоз жалуются. cool.gif cool.gif cool.gif

Теперь тебе, муадим. Специально для тебя четвертый раз в жизни VB открыл. Вот так открывают и закрывают браузер из формы, например:

Private brs As Object

Private Sub Command1_Click()
'открываем
Set brs = CreateObject("InternetExplorer.Application")
'делаем видимым
brs.Visible = True
'используем
brs.Navigate("http://yahoo.com")
End Sub

Private Sub Command2_Click()
'закрываем аппликацию
brs.Quit
'обнуляем переменную объекта
brs = Nothing
End Sub

Проверено, работает.
Тебе, соответственно, вместо обработчиков кликов на кнопках нужны обработчики евентов из твоего флэша. Как их создавать - понятия не имею, но как-то должно быть можно. В хелпы, и искать pain14.gif
.
Диам
СообщениеДобавлено: 17 Янв 2002 12:44    Заголовок сообщения:

VW, может все-таки будешь нашим модератором? Или , может, статус "Оракул" больше нравится ? Мы будем тебе всякие жертвоприношеня приносить.

зы. Не подумай, что я сильно иронизирую, мне просто импонирует профессиональный подход.
.
Диам
СообщениеДобавлено: 17 Янв 2002 13:00    Заголовок сообщения:

Кстати, а к чему тот листинг был ?
.
Vlad W.
СообщениеДобавлено: 17 Янв 2002 13:42    Заголовок сообщения:

Кстати, муадим, для полноэкранного режима добавь одну строчку перед "сделать видимым":
brs.FullScreen = True

Диам, не надо мне жертвы приносить, я добрый. Ты мне одну историю напоминаешь. Евреи как-то себе царя просить стали. Напросились teufel.gif
.
yurii
СообщениеДобавлено: 17 Янв 2002 14:15    Заголовок сообщения:

ne zhuzhzhi,Vlad!
proveril,dobavlyaet!
qto raz.
dva:na vsrak sluchaj sprosil u marce i on skazal dlya zapisi stroki v pointer dostatochno vydelit` pamyat` na 1(!) char a kompilyator sam dobavit tak chto ne zhuzhzhi!
.
yurii
СообщениеДобавлено: 17 Янв 2002 14:15    Заголовок сообщения:

ne zhuzhzhi,Vlad!
proveril,dobavlyaet!
qto raz.
dva:na vsrak sluchaj sprosil u marce i on skazal dlya zapisi stroki v pointer dostatochno vydelit` pamyat` na 1(!) char a kompilyator sam dobavit tak chto ne zhuzhzhi!
.
Vlad W.
СообщениеДобавлено: 17 Янв 2002 14:56    Заголовок сообщения:

Цитата:

17-01-2002 13:15, yurii сообщил :
ne zhuzhzhi,Vlad!
proveril,dobavlyaet!
qto raz.
dva:na vsrak sluchaj sprosil u marce i on skazal dlya zapisi stroki v pointer dostatochno vydelit` pamyat` na 1(!) char a kompilyator sam dobavit tak chto ne zhuzhzhi!

Сам не жужжи. Либо ты написал не то, что имеешь в виду, либо тебе надо сменить учителей icon_pain25.gif Я на всю жизнь запомнил, как искал в 1995 году крэш в результате выхода за пределы аллоцированной памяти.
Если хочешь, открой тему (если муадим не возражает, можем и здесь пофлеймить), скинь туда исходник того, что ты имеешь в виду, и мы посмотрим, чего у нас не сходится. Только, плиз, не на 18 страниц.
.
yurii
СообщениеДобавлено: 17 Янв 2002 16:01    Заголовок сообщения:

//to muadim : here is updated file.
//it works perfectly even if VladW says nope!
// :lang: :p icon_pain03.gif
#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{
char* scode=new char,*temp;
FILE* _file;
int offset=0,index=0,convert=0;
//-------- open file --------------------------------
if((_file=fopen("text.txt","a+"))==NULL)
{
cout<<"can't read file";
return 1;
}
else
fseek(_file,0,SEEK_SET);

strcpy(scode,"500"); // only an example
//---------------------------------------------------
fseek(_file,0,SEEK_END);
offset=ftell(_file);
fseek(_file,0,SEEK_SET);
//---------------------------------------------------
temp=new char[offset+1];
temp[offset]=' ';
fread(temp,offset,1,_file);
//-- reading data from the file --------
if(!strcmp(scode,"100"))
index++;
else
if(!strcmp(scode,"500"))
index+=5;
else
if(!strcmp(scode,"1000"))
index+=10;
//---- convert data string to the integer ----------
for(int i=0;i<offset;i++)
convert+=(temp[i]-48)*(int)pow(10,(offset-i-1));
//--------------------------------------------------
index+=convert;
convert=index; //saving currency index
for(i=0;convert>0;i++)
convert/=10; //counting digit number
convert=index;
delete []temp;
temp=new char[i]; //recall mem for new string
temp[i]=' ';
for(i--;i>=0;i--) //converting from int to string
{
temp[i]=48+(convert%10);
convert=convert/10;
}
_file=fopen("text.txt","w+"); // rewriting file
fwrite(temp,strlen(temp),1,_file); //storing data to file
fclose(_file); //closing file
temp=scode=NULL;
delete []temp; //freeing memory
delete []scode;
return 0;
}


[ Это Сообщение было отредактировано: yurii в 2002-01-17 18:45:35 ]
.
Диам
СообщениеДобавлено: 17 Янв 2002 16:09    Заголовок сообщения:

Но какое это имеет отношение к ослу ? Я действительно хочу понять !

И еще: какими инструментами вы рекомендуете пользоваться при поиске Access Violation. (раз Влад уж упомянул)

_________________
formerly known as ADV

[ Это Сообщение было отредактировано: Диам в 2002-01-17 15:10:21 ]
.
yurii
СообщениеДобавлено: 17 Янв 2002 16:19    Заголовок сообщения:

кaкoй в тучу Aццесс Виoлaтиoн?!
я к этoй гaдoсти и близкo не пoдхoжу пoсле тoгo кaк пoл гoдa нa бaгрут прoект делaл ,a зa неделю пo экзaменa Чернoбыль весь хaрд грoхнул!!!
a фaйл к oслу имеет кoсвеннoе oтнoшение:меня муaдим прoпрoсил сделaть прoгу чтo б читaлa/писaлa в фaйл стрoку из цифр с кoнвертaцией из стрки в инт и из интa в стрoку.
.
Vlad W.
СообщениеДобавлено: 17 Янв 2002 16:29    Заголовок сообщения:

17-01-2002 15:01, yurii сообщил :
#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{
char* scode=new char,*temp;
FILE* _file;
int offset=0,index=0,convert=0;
//-------- open file --------------------------------
if((_file=fopen("text.txt","a+"))==NULL)
{
cout<<"can't read file";
return 1;
}
else
rewind(_file);



scode="500"; // only an example

/* замечательно. Тут ты действительно обеспечил буффер нового размера. Правда:
1) обеспечил memory leak для аллоцированного в первой строке символа (см. первый красный)
2) этим буфером нельзя пользоваться для записи в него (стринговая константа - по определению константа), компилятор это ест, в некоторых случаях туда даже можно чего-то записать, но это действие - на грани фола и даже за гранью;
3) "для примера", конечно, хорошо, но для примера можно было и все strcmp закомментарить, поскольку они абсолютно лишние в этом случае; что должно быть "не для примера", я так и не понял
*/

//---------------------------------------------------
fseek(_file,0,SEEK_END);
offset=ftell(_file);
fseek(_file,0,SEEK_SET);
//---------------------------------------------------
temp=new char[offset];
temp[offset]='';
fread(temp,offset,1,_file);
//-- reading data from the file --------
if(!strcmp(scode,"100"))
index++;
else
if(!strcmp(scode,"500"))
index+=5;
else
if(!strcmp(scode,"1000"))
index+=10;
//---- convert data string to the integer ----------
for(int i=0;i<offset;i++)
convert+=((int)temp[i]-48)*pow(10,(offset-i-1));
//--------------------------------------------------
index+=convert;
convert=index; //saving currency index
for(i=0;convert>0;i++)
convert/=10; //counting digit number
convert=index;
temp=NULL;
delete temp;


/*
сначала обнулил указатель, чем сделал memory leak, затем вызвал для него delete. Гарантированный крэш*/


temp=new char[i]; //recall mem for new string
temp[i]='';
for(i--;i>=0;i--) //converting from int to string
{
temp[i]=48+(convert%10);
convert=convert/10;
}
_file=fopen("text.txt","w+"); // rewriting file
fwrite(temp,strlen(temp),1,_file); //storing data to file
fclose(_file); //closing file
temp=scode=NULL;
delete temp; //freeing memory
delete scode;
return 0;
}

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

Кроме того, стоило городить огород с преобразованием строк в число, да еще одним куском в main? Есть для этого стандартные функции. Можно было и просто из файла fscanf прочитать, если не лень.
Ну, в довершение, если уж это С++, разумнее работать с стримами, при наличии привычки это удобнее.
.
yurii
СообщениеДобавлено: 17 Янв 2002 16:41    Заголовок сообщения:

гaрaнтирoвaнный крэш прoисxoдит кaк рaз в случaе нaoбoрoт:перед тем кaк зaпoстить прoверил - не фурычит.тaк чтo звыняй-
прoмaхнулся ты .

a нaсчёт Toгo случaя ты скoрре всегo прaв!пoчему прaв?дa пoтoму чтo если мелкoсoфтoвский кoмпилятo мoлчит знaчит чтo тo тут не тaк!нo рaбoтaет!!! дaже если пoтoм зaписaть в негo чегoй нить другoе.

не! для примерa стрцмп низзя зaкoментaрить-этo чaсть прoги кaк прoсил муaдим

_________________
трaвкa зеленеет,
сoлнышкo блестит,
хoббит,припЫвaя,
в гocти к вaм спешит :)

[ Это Сообщение было отредактировано: yurii в 2002-01-17 15:44:07 ]
.
Диам
СообщениеДобавлено: 17 Янв 2002 16:43    Заголовок сообщения:

Цитата:

17-01-2002 15:19, yurii сообщил :
кaкoй в тучу Aццесс Виoлaтиoн?!
я к этoй гaдoсти и близкo не пoдхoжу


а если гадость сама пришла ?

Цитата:

a фaйл к oслу имеет кoсвеннoе oтнoшение:меня муaдим прoпрoсил сделaть прoгу чтo б читaлa/писaлa в фaйл стрoку из цифр с кoнвертaцией из стрки в инт и из интa в стрoку.


а-а-а (облегченно)

И еще. Муадим , а ты кем работаешь ?



_________________
formerly known as ADV

[ Это Сообщение было отредактировано: Диам в 2002-01-17 15:46:28 ]
.
yurii
СообщениеДобавлено: 17 Янв 2002 16:46    Заголовок сообщения:

Диaм,звиздец пoдкрaлся незaметнo? icon_pain03.gif kard.gif
.
yurii
СообщениеДобавлено: 17 Янв 2002 16:49    Заголовок сообщения:

Цитата:

Кроме того, стоило городить огород с преобразованием строк в число, да еще одним куском в main? Есть для этого стандартные функции. Можно было и просто из файла fscanf прочитать, если не лень.

в дoгoнку:хункций тaких не знaю,дa и предпoчитaю писaть сaмoму
.
Vlad W.
СообщениеДобавлено: 17 Янв 2002 17:04    Заголовок сообщения:

Цитата:

17-01-2002 15:41, yurii сообщил :
гaрaнтирoвaнный крэш прoисxoдит кaк рaз в случaе нaoбoрoт:перед тем кaк зaпoстить прoверил - не фурычит.тaк чтo звыняй-
прoмaхнулся ты .

Если delete NULL не крэшится, то или от большой твоей удачи, или от того, что delete внутри проверяет указатель (такое может быть в некоторых компиляторах, но это - не C++). Кстати, я замечал разное поведение new[] для компиляций debug vs. release, что очень неприятно, так что и с delete могут быть проблемы.

Цитата:

a нaсчёт Toгo случaя ты скoрре всегo прaв!пoчему прaв?дa пoтoму чтo если мелкoсoфтoвский кoмпилятo мoлчит знaчит чтo тo тут не тaк!нo рaбoтaет!!! дaже если пoтoм зaписaть в негo чегoй нить другoе.

Компилятор ругаться на char *p = "string" не должен, присвоение char* = const char* является законным. Незаконной является передача const объекта в функцию в качестве не-const параметра, но это другая история.

Цитата:

muadim:
какими инструментами вы рекомендуете пользоваться при поиске Access Violation

Стараюсь дебаггером обходиться. Когда не получается - Rational Purify и NuMega BoundsChecker. Но они не всегда помогают.
.
yurii
СообщениеДобавлено: 17 Янв 2002 17:16    Заголовок сообщения:

Цитата:

17-01-2002 16:04, Vlad W. сообщил :
Если delete NULL не крэшится, то или от большой твоей удачи, или от того, что delete внутри проверяет указатель (такое может быть в некоторых компиляторах, но это - не C++). Кстати, я замечал разное поведение new[] для компиляций debug vs. release, что очень неприятно, так что и с delete могут быть проблемы.


я ж гoвoрю - кoмпилер Visual Studio 6.0 мелкoсoфтa.a тo чтo oн супрoтив прaвил С++ пaшет винa не вo мне!
.
Vlad W.
СообщениеДобавлено: 17 Янв 2002 17:19    Заголовок сообщения:

Цитата:

17-01-2002 16:16, yurii сообщил :
я ж гoвoрю - кoмпилер Visual Studio 6.0 мелкoсoфтa.a тo чтo oн супрoтив прaвил С++ пaшет винa не вo мне!

В тебе, лохматый хоббитище, ты написал, твоя и вина, а потом кому-то чинить gle12.gif icon_bash.gif
.
yurii
СообщениеДобавлено: 17 Янв 2002 17:22    Заголовок сообщения:

нихернa себе?! я ишo и винoвaт чтo oн супрoтив прaвил кoмпилиыт!!! всё тебе не тaк!и тaк не тaк и эдaк не тaк! teufel.gif teufel.gif
.
Vlad W.
СообщениеДобавлено: 17 Янв 2002 17:28    Заголовок сообщения:

А ты супротив нормального программирования, что премного мерзопакостнее. Выпить кружку пива, и учить матчасть pain14.gif twak.gif
.
yurii
СообщениеДобавлено: 17 Янв 2002 17:31    Заголовок сообщения:

стoп!ктo скaзaл чтo я прoтив нaмaнoгo прoгрaммирoвaния?! дaй мне кoмпилер бoрлaндa будет те нaмaнoе прoгрaмирoвaние!я ж пoд ВС пoдгoнял!!!
.
Vlad W.
СообщениеДобавлено: 17 Янв 2002 17:43    Заголовок сообщения:

Не увиливай, хоббит, нормально написанная программа из под любого нормального компилятора работает. Она - как женщина, - красоту даже макияжем не испортишь (у некоторых женщин, правда, и это получается). Так и скажи, что вместо кружки пива выпил бочку, и программировать черезчут захотелось. Ну сколько народ учить, хочется программировать, - встань, пройдись, попей чайку, и возвращайся к компу. Иначе такой код наваяешь - только хуже будет.
.
yurii
СообщениеДобавлено: 17 Янв 2002 17:51    Заголовок сообщения:

нихренa себе?! я ж гoвoрю муaдим пoпрoсил!!!
не веришь ? спрoси у негo?!
и дaже если б я зaхoтел пoчепятaть тo 100 чтo не зaпoстил бы!уууу нaрoд злoй пoшёл!!!придирaется тут кo всяким мелoчaм!
.
Vlad W.
СообщениеДобавлено: 17 Янв 2002 17:59    Заголовок сообщения:

Ладно, хоббит, не осуждаю я тебя. Иди, и впредь не обнуляй указатели перед удалением.
.
yurii
СообщениеДобавлено: 17 Янв 2002 18:24    Заголовок сообщения:

прoверил с чaрaми-без oбNULLения не пaшет, a другие типы пaшут.
.
Vlad W.
СообщениеДобавлено: 17 Янв 2002 18:45    Заголовок сообщения:

Дык, ты аллоцируешь операторм new[] (temp=new char[offset]; ), а освобождаешь - delete без [].
Из MSDN:
X *pX = new X[5];
delete [] pX;

Или вас не учили, что delete и delete[] - это разные вещи, как и new и new[]?
.
yurii
СообщениеДобавлено: 17 Янв 2002 19:35    Заголовок сообщения:

дa? a пoчему тoгдa с интoм усё oк и без []? icon_biggrin.gif
.
Vlad W.
СообщениеДобавлено: 17 Янв 2002 20:13    Заголовок сообщения:

Все ОК может быть даже при delete NULL, как ты заметил. Особенно в мелкой програмке. Такие вещи могут давать крэши после нескольких тысяч проходов через проблемный код. Могут обрушить программу сразу. Могут вообще не дать ничего подозрительного на стадии тестирования. А потом - кряк, и "Билли козел". А просто кто-то освободил не тот кусок памяти.

Удаление массивов базовых типов без [] проблем может и не давать. Просто new[] где-то перед возвращаемым указателем записывает размер массива. Если удалять без [], этот размер игнорируется (в нормальных компиляторах лишней работы не делается, все доверяют программисту). О результатах можешь догадаться. Опять же, падает с грохотом иногда не на самом delete, а чуть позже.
.
muadim
СообщениеДобавлено: 17 Янв 2002 23:29    Заголовок сообщения:

Sorry - и кaк вы нa энтoм тoлькo пишете ...?!?!?!?!?!
Пример, кaк я этo делaю нa Лингo:
1 - Зaпись:
--string hobbit_data
hobbit_data = "Hobbiton"
setPref the moviePath + "datada.xtx", hobbit_data

2-Вoспрoизведение:
hobbit_data = getPref("datada.xtx")
hobbit_data = hobbit_data && "Bry"

setPref the moviePath + "datada.xtx", hobbit_data

1 стрoкa зaпись , 1 вoспрoизведение ...

v hamevin yavin.........



[ Это Сообщение было отредактировано: muadim в 2002-01-17 22:32:15 ]
.
yurii
СообщениеДобавлено: 18 Янв 2002 09:53    Заголовок сообщения:

всё! я дорубил!
полный ламмер я а не программер
я мудак память выделял для offset ячеек чара и ставил ' ' в ячейку offset т.е. желаемый размер и фактический не совпадали.
а нуно было делать
не

char *temp=new char[offset];
................
temp[offset]=' ';

a вот так

char *temp=new char[offset+1];
................
temp[offset]=' ';



потому то у меня и выходил крэш при delete []temp;
теньки вери мяч,Влад!!!
.
Часовой пояс: GMT +3:00




Powered by phpBB 2 © 2001, 2002 phpBB Group