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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.054 c
4-1144918903
Sour Smile
2006-04-13 13:01
2006.08.13
Как узнать размеры разделов винчестеров?


15-1153149555
HeadHunter
2006-07-17 19:19
2006.08.13
Qulix Systems (BelHard) приглашает на работу программистов


15-1153145240
PSPF2003
2006-07-17 18:07
2006.08.13
Название фильма.


15-1153301533
cosinus
2006-07-19 13:32
2006.08.13
Эээ... Туплю? Проблеммы с установкой DSPack.


1-1151372156
parovoZZ
2006-06-27 05:35
2006.08.13
Экспорт / импорт (dll) функций из класса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский