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

Вниз

Почему возникает ошибка при попытке чтения блока.   Найти похожие ветки 

 
Cerberus ©   (2006-12-05 00:00) [0]

AssignFile(Src, OpenDialog1.FileName);
 Reset(Src);
   while not EoF(Src) do begin
   BlockRead(Src,buf,sizeof(string));//вот здесь
   end;
  CloseFile(src);


 
Gero ©   (2006-12-05 00:01) [1]

Какая ошибка?


 
Kolan ©   (2006-12-05 00:03) [2]

> sizeof(string));//

Из-за этого видимо..


 
Anatoly Podgoretsky ©   (2006-12-05 00:03) [3]

> Cerberus  (05.12.2006)  [0]

Очень информативно.
Годы идут, а человек все тот же.


 
Cerberus ©   (2006-12-05 00:08) [4]

Теперь не какую программа вообще вылетает.
А раньше выдовал Ввода-вывода.


 
Cerberus ©   (2006-12-05 00:08) [5]

Теперь не какую программа вообще вылетает.
А раньше выдовал Ввода-вывода.


 
Cerberus ©   (2006-12-05 00:09) [6]


> Kolan ©   (05.12.06 00:03) [2]
> > sizeof(string));//

Такая конструкция в blockwrite работает нормально.


 
Kolan ©   (2006-12-05 00:12) [7]

Не понятно что такое Buf, но с количеством наверно так:
Ха, хотел написать что-то вроде Length(string)*SizeOf(string[1]), возник вопрос что такое string?


 
Gero ©   (2006-12-05 00:15) [8]

> [6] Cerberus ©   (05.12.06 00:09)

Да, 4 байта возвращает. Или 256.


 
Джо ©   (2006-12-05 00:16) [9]

> [6] Cerberus ©   (05.12.06 00:09)
>
> > Kolan ©   (05.12.06 00:03) [2]
> > > sizeof(string));//
>
> Такая конструкция в blockwrite работает нормально.

Значешь, сколько будет SizeOf(string). Возможно, тебя удивит, но это выражение всегда будет равно 4, в текущих реализациях Делфи.


 
ProgRAMmer Dimonych ©   (2006-12-05 00:16) [10]

> Такая конструкция в blockwrite работает нормально.
Мне что-то подсказывает, что SizeOf(string) будет выдавать то, что нужно, только в отдельных случаях. String - это же массив of Char. Если Length9String)=0, то SizeOf(String)=1, наверное (1 байт - длина строки или идентификатор конца)?


 
Cerberus ©   (2006-12-05 00:17) [11]

var buf : string;

> Kolan ©   (05.12.06 00:12) [7]

String - тип данных;


 
Gero ©   (2006-12-05 00:18) [12]

> [9] Джо ©   (05.12.06 00:16)
> Возможно, тебя удивит, но это выражение всегда будет равно
> 4, в текущих реализациях Делфи.

Не всегда :)


 
ProgRAMmer Dimonych ©   (2006-12-05 00:18) [13]

> Cerberus ©   (05.12.06 00:17) [11]
См. [8]-[9] и небольшое пояснение в [10].


 
Cerberus ©   (2006-12-05 00:18) [14]


> Джо ©   (05.12.06 00:16) [9]

Нет меня это не удивит это чего я и добиваюсь.


 
Gero ©   (2006-12-05 00:19) [15]

> [10] ProgRAMmer Dimonych ©   (05.12.06 00:16)

Ты изрекаешь бред, советую почитать теорию.


 
ProgRAMmer Dimonych ©   (2006-12-05 00:19) [16]

> Cerberus ©   (05.12.06 00:18) [14]
> Нет меня это не удивит это чего я и добиваюсь.
Тогда не проще ли написать вместо SizeOf() просто 4?


 
Джо ©   (2006-12-05 00:19) [17]

> [12] Gero ©   (05.12.06 00:18)
> > [9] Джо ©   (05.12.06 00:16)
> > Возможно, тебя удивит, но это выражение всегда будет равно
>
> > 4, в текущих реализациях Делфи.
>
> Не всегда :)

Ну да, конечно, если установить, что string = ShortString, то да :)


 
Gero ©   (2006-12-05 00:21) [18]

> [10] ProgRAMmer Dimonych ©   (05.12.06 00:16)

Хотя если ты про ShortString, то я неправ.


 
ProgRAMmer Dimonych ©   (2006-12-05 00:21) [19]

> Gero ©   (05.12.06 00:19) [15]
По поводу результата SizeOf? Возможно. Никогда не пользовался BlockRead//BlockWrite, поэтому не приходилоь и сталкиваться с размером стринга. А по поводу природы постоянности размера - я прав? Или нет?


 
Gero ©   (2006-12-05 00:21) [20]

> [14] Cerberus ©   (05.12.06 00:18)

Чего ты добивашься? Неработоспособной программы?


 
Gero ©   (2006-12-05 00:24) [21]

> [19] ProgRAMmer Dimonych ©   (05.12.06 00:21)


> А по поводу природы постоянности размера - я прав? Или нет?

Для ShortString прав, там будет так, как ты описал. А по умолчанию string (AnsiString) — это указатель. Следовательно, ничего удивительного, что SizeOf(string) = SizeOf(Pointer).


 
Cerberus ©   (2006-12-05 00:25) [22]

Всё равно даже если sizeof(string) заменит простым числом ситуация аналогична.


 
Gero ©   (2006-12-05 00:25) [23]

> [22] Cerberus ©   (05.12.06 00:25)

Это и не удивительно.


 
Anatoly Podgoretsky ©   (2006-12-05 00:25) [24]

> ProgRAMmer Dimonych  (05.12.2006 0:19:16)  [16]

Были такие, вместо Integer писали 2


 
Anatoly Podgoretsky ©   (2006-12-05 00:26) [25]

> ProgRAMmer Dimonych  (05.12.2006 0:21:19)  [19]

Неправ, читай предыдущее сообщение.


 
Sha ©   (2006-12-05 01:20) [26]

Лучше читать просто в буфер - не ошибешься,
а если уж непременно в строку хочется то так:  
 
 AssignFile(Src, OpenDialog1.FileName);
 Reset(Src,1);
 SetLength(buf,1024);
 repeat
   BlockRead(Src,buf[1],Length(string),Count);
   тут юзаем Count байт из нашей строки
 until Count=0;
 CloseFile(src);


 
Sha ©   (2006-12-05 01:22) [27]

сорри у тебя ошибку скопировал ))
надо
AssignFile(Src, OpenDialog1.FileName);
Reset(Src,1);
SetLength(buf,1024);
repeat
  BlockRead(Src,buf[1],Length(buf),Count);  
  тут юзаем Count байт из нашей строки
until Count=0;
CloseFile(src);



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

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

Наверх





Память: 0.5 MB
Время: 0.044 c
1-1163086672
VID
2006-11-09 18:37
2006.12.24
Кривое отображение формы на другом компе.


3-1157154341
Strech
2006-09-02 03:45
2006.12.24
Подключение к базе защищенной паролем


9-1140717517
Очень Новичок
2006-02-23 20:58
2006.12.24
DXPlay или Client, Server Socket


3-1160662301
0_archi_0
2006-10-12 18:11
2006.12.24
ADO, JRO, Access, DBGrid и вообще.


15-1164875898
Храмой
2006-11-30 11:38
2006.12.24
Глупый но вайжный для меня вопрос





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