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

Вниз

Как определить "удачность" выполнения NewWriteFileStream   Найти похожие ветки 

 
nester ©   (2004-04-23 20:12) [0]

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


 
z007   (2004-04-23 21:30) [1]

Может, проверить Stream.Handle?
Вроде бы, при ошибке должен быть типа -1?


 
nester ©   (2004-04-23 22:48) [2]

Ooooooo.
Точно. Спасибо:)))))))


 
nester ©   (2004-04-26 14:22) [3]

Только точнее Handle будет не -1, а 4294967295
А то он типа Cardinal - а ето всегда больше нуля:)))


 
z007   (2004-04-26 22:15) [4]

Строго говоря - да.
Но если поступать с handle неправильного filestream как с integer, то получится как раз -1 (мы знаем почему :)


 
nester   (2004-08-12 16:43) [5]

Это как? я не знаю.


 
z007   (2004-08-12 22:11) [6]

Потому, что 4294967295 для integer - это слишком много :)
Если задавать ему неправильное значение, должен же он что-то показывать... Или вы предпочтете overflow? :))
Шутка.
посмотри в отладчике или на выводе Int2Str на значение i в цикле:
Procedure SetInt;
var j,i:integer;
begin
i := 2147483647 //максимальное значение для integer
for i:=0 to 2147483647 do
begin
 inc(i);
 ShowMessage(int2Str(i)); //или можно записывать это в типа memo
end;
end;


Первый Inc(i) даст i:=–2147483648.
Это минимальное значение Integer. Затем -2147483647 и т.д.
То есть 2147483647 + 1 = –2147483648 etc.
Так что 2147483647 + 2147483648 (Разница между maxInt и maxCardinal), то получится как раз -1.
Нетрудно заметить, что Cardinal:=-MinInt+MaxInt.
Integer почти в 2 раза меньше Cardinal как раз из за наличия в Integer знака (+/-), а вообще-то число единиц в них одинаково и оба суть одно и то же.

PS Почти в два раза - это, по-моему, из за нуля.


 
nester   (2004-08-12 22:41) [7]

ага, понял
if integer(stream.Handle) < 0 then

такая консрукция работает:))) спасибо



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

Форум: "KOL";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.037 c
3-1107103170
Ищущий ответ
2005-01-30 19:39
2005.02.27
Как построить запрос?


6-1103521635
Lex_!
2004-12-20 08:47
2005.02.27
Web-чат.


3-1106800214
UVV
2005-01-27 07:30
2005.02.27
Запрос с параметром timestamp


14-1108038266
TUser
2005-02-10 15:24
2005.02.27
Полезный эксперт


1-1108315129
Michael5
2005-02-13 20:18
2005.02.27
Подскажите, как определить, какая Button нажата (в режиме run-tim





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