Форум » [x]Harbour » Какими функциями правильнее пользоваться ? » Ответить

Какими функциями правильнее пользоваться ?

Andrey: Всем привет. Подскажите пожалуйста, какими функциями работы с файлами правильней пользоваться ? Из СТ или для работы с memo, т.е. STRFILE(), FILESTR() или hb_memoread(), hb_memoread() ? Кстати про функции hb_memoread(), hb_memoread() нет в доке по xHarbour Language Reference Guide 1.1 Где можно почитать про них ?

Ответов - 19

a_sidorov: Можно почитать, например https://vivaclipper.wordpress.com/tag/hb_memoread/, https://vivaclipper.wordpress.com/2014/01/16/hb_memoread/

AlexMyr: Andrey пишет: Подскажите пожалуйста, какими функциями работы с файлами правильней пользоваться ? они все правильные, какая задача стоит?

Andrey: a_sidorov пишет: Можно почитать, например https://vivaclipper.wordpress.com/tag/hb_memoread/, https://vivaclipper.wordpress.com/2014/01/16/hb_memoread/ Мозила пишет: "Проблема при загрузке страницы!" AlexMyr пишет: они все правильные, какая задача стоит? Записать в файл, прочитать файл. Да любые действия с файлами... Какая разница между этими функциями ?


AlexMyr: Andrey пишет: Записать в файл, прочитать файл. пробуй hb_memoread, hb_memowrit. Andrey пишет: Какая разница между этими функциями ? не вникал, использую hb_memo*.

a_sidorov: Оптимально то, что работает. А на счет hb_memoread() у меня очень большие сомнения о ее работоспособности, ну такое загрузил из одной достаточно короткой строки, что больше не доверяю. Скорее всего это разные библиотеки, которые делают одно и то же. Вопрос - какой программист больше ошибок допустил при написании. Мое мнение, нужно прочесть файл - читай проверенными способами.

AlexMyr: a_sidorov пишет: А на счет hb_memoread() у меня очень большие сомнения о ее работоспособности hbmk2 использует hb_memoread, посмотрите исходники, какие сомнения?

PSP: AlexMyr пишет: hbmk2 использует hb_memoread, посмотрите исходники, какие сомнения? Это - психология. Есть выражение: "Самая короткая дорога та, которую знаешь" :) Наш ум так работает. Если есть уже проверенное решение возникшего вопроса, автоматически будет выбрано оно. :) Тут рядом тема про hbmk2, path, bcc и батники: то же самое. :)

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

Andrey: Теперь другой вопрос ? Можно ли как то сделать следующее - передать команду на закрытие своего ЕХЕ-ника ? Чтобы он нормально закрыл базы и вышел... Через файл не хочется. Сделал главное меню программы на МиниГуи, запускаю терминалку на хХарборе. Знаю хендл этой терминалки. При выходе из программы на МиниГуи нужно закрыть все открытые терминалки. Зная свой хендл приложения - можно ли через систему получить команду управления для своего хендла и обработать ? Ну или еще какие либо варианты есть...

AlexMyr: PSP пишет: Тут рядом тема про hbmk2, path, bcc и батники: то же самое. :) если тоже самое, напишите разрабам - может поправят. Andrey пишет: Согласен ! Результат небольшого опроса - что нравиться, тем и пользуемся ! Andrey тему зачем открывал - просто потрепаться?

Andrey: AlexMyr пишет: Andrey тему зачем открывал - просто потрепаться? Нет, не трепаться. И я её не закрывал... Для себя пока выводы сделал и работать продолжаю. А тема то не одна про дисковые функции, есть и другие вопросы - см. выше ! Уж очень заковыристый вопрос и не знаешь как к нему приступить....

fil: Можно ли как то сделать следующее - передать команду на закрытие своего ЕХЕ-ника ? например через сокет

AlexMyr: Andrey пишет: Для себя пока выводы сделал и работать продолжаю. так на чем остановились, какие ф-ии исполььзуете?

SergKis: Andrey пишет:Сделал главное меню программы на МиниГуи, запускаю терминалку на хХарборе. Знаю хендл этой терминалки. При выходе из программы на МиниГуи нужно закрыть все открытые терминалки. попробуй: PostMessage( hWnd, WM_KEYDOWN, VK_ESCAPE, 0) // если по ESC разрешен выход PostMessage( hWnd, WM_CLOSE, 0, 0) PostMessage( hWnd, WM_QUERYENDSESSION, 0, 0)

Andrey: SergKis пишет: попробуй: А как базы закрыть нормально при таком выходе из программы ? Т.е. если у меня в процедуре выхода стоит: EXIT PROCEDURE EXIT2WIN() ..... // моя отработка служебных записей в бд MyCloseJournal() .......... CLOSE ALL RETURN Функция MyCloseJournal() будет отрабатывать ?

SergKis: Andrey пишет:Функция MyCloseJournal() будет отрабатывать ? попробуй сделать: 1. Shut Down компу, с загруженной программой, система выдает приложениям WM_QUERYENDSESSION 2. нажать X (close) или Alt+F4 окна своего wwt приложения, что будет - это сообщение WM_CLOSE см. Harbor\src\rtl\gtwwt\gtwwt.c (line 866): ... case WM_QUERYENDSESSION: /* Closing down computer */ hb_vmRequestQuit(); return 0; case WM_CLOSE: /* Clicked 'X' on system menu */ if( pWVT->bClosable ) { PHB_ITEM pItem = hb_itemPutL( NULL, HB_TRUE ); hb_setSetItem( HB_SET_CANCEL, pItem ); hb_itemRelease( pItem ); hb_vmRequestCancel(); } else hb_gt_wvt_AddCharToInputQueue( pWVT, HB_K_CLOSE ); ... думаю должно быть нормально все.

SergKis: Andrey если совсем хочешь взять под управление, то делай PostMessage( hWnd, WM_KEYDOWN, VK_F12, 0) в задаче на F12 повесь блок кода своего "нормального" завершения прогр. без вопросов. вместо F12 можно взять и др. кл., например F15 или F10

Andrey: SergKis пишет: попробуй сделать: Спасибо большое ! Получилось нормально и с PostMessage( hWnd, WM_CLOSE, 0, 0) ! Повесил в свою программу отдельную обработку по этому событию и программа нормально закрывается. EXIT PROCEDURE EXIT2WIN() отрабатывает ВСЕГДА ! Потом нашел пример у Григория для МиниГуи: \MiniGUI\SAMPLES\Applications\CLOSEALL - классный пример !

Andrey: AlexMyr пишет: так на чем остановились, какие ф-ии исполььзуете? Теперь обеими функциями пользуюсь, для маленьких файлов. Для больших файлов, в случае добавления к существующему файлу, лучше использовать StrFile().



полная версия страницы