Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: CL | DM;

Вниз

всё -- досисадминился   Найти похожие ветки 

 
Rouse_ ©   (2006-07-19 21:29) [40]

Т.е. если ты понял я пытаюсь работать с файлом на уровне его физической структуры через read write (благо формат более менее известен), а не через АПИ. Это достаточно часная ситуация


 
Piter ©   (2006-07-19 21:40) [41]

Rouse_ ©   (19.07.06 21:25) [39]

вот, слушай, и я ведь об этом. Так если ты фактически повторяешь работу StgIsStorageFile - зачем ты ее вызываешь вообще?

То есть, сначала винда своими внутренними механизмами делает это, а потом ты повторно делаешь это уже на низком уровне. Но возникает вопрос - НАФИГА?

Если уж ты низкоуровнево разбираешь все равно - так и сделай до конца. Ведь как думаешь - у StgIsStorageFile есть критерии остановки работы, предотвращение от ухода в бесконечную рекурсию и прочее? Ну так и сделай такие же критерии в своем until, тогда и необходимость двойной работы отпадет :)

Я понимаю, почему реализовано так - потому что проще и быстрее так написать, тем более уж в системе есть такая функция. Но с другой то стороны - согласись, можно написать пограмотнее - и тогда необходимость в бесконечных циклах отпадет :)


 
Rouse_ ©   (2006-07-19 21:44) [42]


>  Так если ты фактически повторяешь работу StgIsStorageFile
> - зачем ты ее вызываешь вообще?

Дык, под FAT32 из-за нетранзакционной модели файлики бьются иногда. Пользователи которые заплатили по 800 зеленью начинают страшно нервничать - прихождиться писать. А вызываю я ее, чтобы удостовериться - битая цепочка или нет. Нормальное завершение цепочки - значения -1, -2, -3, -4 . Каждое из них что-то да означает. Финальное завершение цепочки -2. Если StgIsStorageFile не смогла самостоятельно выйти на конец цепи - начинаю работать я. Там просто помимо убития физической структуры иногда бьются банки данных. Т.е. цепочки сами целые, а данные частично покорежены. Мне нужн выяснить - какую часть алгоритма запускать для восстановления.


 
Piter ©   (2006-07-19 21:47) [43]

Rouse_ ©   (19.07.06 21:44) [42]

да, но опять же - Розыч, ведь функционал твоей программы перекрывает функционал StgIsStorageFile? Так зачем ты ее используешь?


 
Rouse_ ©   (2006-07-19 21:55) [44]

Так проще и быстрее определить :) У меня сильно расширенный функционал, который для простой проверки не нужен.


 
DiamondShark ©   (2006-07-19 22:25) [45]


> а намедни обнаружил в программе ещё более чудную конструкцию:
>  repeat ... until true. %-) удалять не стал.

И правильно сделал.

repeat
 if not Tratata(...) then break;
 if Halabala(...) <> HALABALA_NOERROR then break;
 ....
until true;

так иногда бывает. чтоб гоутуками пуристофф не пугать ;))


 
Eraser ©   (2006-07-19 22:34) [46]

> [42] Rouse_ ©   (19.07.06 21:44)


> Пользователи которые заплатили по 800 зеленью начинают страшно
> нервничать

неужели у этих пользователей нету ещё сотни $, чтобы установить нормальную ОС ? :)


 
Piter ©   (2006-07-19 22:45) [47]

Rouse_ ©   (19.07.06 21:55) [44]
Так проще и быстрее определить :)


ну насчет быстрее я не уверен. А проще - это да :)

У меня сильно расширенный функционал, который для простой проверки не нужен

вот именно. расширенный функционал, который перекрывает виндовый.

Сначала винда сканерит на ошибки, и если ошибки найдены - то в работу вступаешь ты :)

А почему бы самому не сканерить - сразу ловить ошибки и собственно удостоверяться - а есть ли они.


 
Ketmar ©   (2006-07-19 22:50) [48]

>DiamondShark ©   (19.07.06 22:25) [45]
и так делаю. но в данном случае это был обломок от действительно "псевдобесконечного" цикла. цикл планируется вернуть назад, потому и не удалил. %-)

а избегание goto в той софтине я делаю ещё интересней:
try
 ...
 if ZZZ then exit;
 ...
finally
 ...
end;


%-)


 
jack128 ©   (2006-07-19 23:11) [49]

Piter ©   (19.07.06 22:45) [47]
А почему бы самому не сканерить - сразу ловить ошибки и собственно удостоверяться - а есть ли они.


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


 
isasa ©   (2006-07-19 23:28) [50]

Что-то ветка затихла

while true do begin
  ...
 if condition then break;
end;


 
Piter ©   (2006-07-20 02:48) [51]

isasa ©   (19.07.06 23:28) [50]
while true do begin
 ...
if condition then break;
end;


а это что такое? Если я правильно понял - чистый repeat..until, нафига тут такой while?


 
Rouse_ ©   (2006-07-20 09:55) [52]


> ну насчет быстрее я не уверен.

Быстрее - быстрее, у меня после чтения каждого участка идет анализ на рекурсию (если конечно еще AV не поймали). Там память в основном жрется. Ну и различные доп вычисления которые нехиленько грузят проц.


 
Rouse_ ©   (2006-07-20 10:06) [53]


> неужели у этих пользователей нету ещё сотни $, чтобы установить
> нормальную ОС ? :)

Ты не поверишь. у некторых стоят уже двухядерные пни, НО!!! Windows 98


 
umbra ©   (2006-07-20 10:12) [54]

2 Piter ©   (19.07.06 19:47) [34]

> repeat
> if ClientConnected then
>   ServeClient;
> until Terminated;
>

если этот сервис выполняет для клиента длительные по времени операции, то проверка на необходимость завершения на каждой итерации - плохая идея. К примеру, ФТП сервер выдает клиенту файл размером 2 гига по узкому (скажем, 10 кб/с), но очень устойчивому каналу. К тому же, этот сервер использует блокирующие сокеты. И вот, спустя 5 минут после начала закачки у сисадмина появляется необходимость остановить сервер. Если сделать так, как Вы предложили, то сколько придется ждать сисадмину, пока сервер остановится? :)


 
Piter ©   (2006-07-20 13:34) [55]

umbra ©   (20.07.06 10:12) [54]
. Если сделать так, как Вы предложили, то сколько придется ждать сисадмину, пока сервер остановится? :)


а если вместо Terminated вставить False, как тут предлагалось, то сколько надо будет ждать?
Не понимаю вопроса.



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

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.067 c
15-1152112654
Nizon
2006-07-05 19:17
2006.08.13
OpenGL or DirectX


10-1122965770
KVA
2005-08-02 10:56
2006.08.13
встраивание ActiveX формы


2-1153987112
Vovan2006
2006-07-27 11:58
2006.08.13
Возможна ли обработка ситуации выгрузки программы в самой програм


2-1153835783
WolfRamm
2006-07-25 17:56
2006.08.13
Zeos


1-1151321004
KygECHuK
2006-06-26 15:23
2006.08.13
Работа с окнами