Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2009, 12:01   #1
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию Прочитать из файла строку

Мне нужно прочитать ровно 11 байт из файла в String (точнее, в DataGridView::Rows[0]::Cells[0]). Возможные варианты с ошибками:

MyString = MyBinaryReader->ReadBytes(11); // Получается "System.Byte[]"
MyString = MyBinaryReader->ReadBytes(11)->ToString(); // То же самое
MyString = MyStreamReader->ReadString(); // Не смог разобраться с описанием даже по-русски
MyStreamReader->ReadBlock (MyWCharArray, 0, 11); // История повторяется - я получаю такой же array<wchar_t>^
ds.Dante вне форума Ответить с цитированием
Старый 21.08.2009, 12:21   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Попробуй это:
Код:
FileStream myFStream = new FileStream("test.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite);
for(int i = 0; i < 11; i++)
      Console.Write(myFStream.ReadByte());
Hollander вне форума Ответить с цитированием
Старый 21.08.2009, 13:30   #3
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Код:
for (int i=0; i<11; i++)
    MyStringBuilder.Append (MyBinaryReader->ReadByte()); // Выдает число вместо символа
    MyStringBuilder.Append ((char)MyBinaryReader->ReadByte()); // То же самое
    MyStringBuilder.Append ((wchar_t)MyBinaryReader->ReadByte()); // Выдает юникодовский бред
    MyStringBuilder.Append ((wchar_t)MyStreamReader->Read()); // Берет 2 байта вместо одного

Последний раз редактировалось ds.Dante; 21.08.2009 в 13:33.
ds.Dante вне форума Ответить с цитированием
Старый 21.08.2009, 13:47   #4
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Свое число можешь перевести в char:
Код:
char ch = (char)myFStream.ReadByte();
Hollander вне форума Ответить с цитированием
Старый 21.08.2009, 14:51   #5
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Это то же приведение типов. Выдает число. И ToString не помогает.
ds.Dante вне форума Ответить с цитированием
Старый 21.08.2009, 15:26   #6
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Кстати, прицитирую краткое описание функции BinaryReader.ReadString в русском MSDN:
Цитата:
Считывает строку из текущего потока. Строка предваряется значением длины строки, которое закодировано как целое число блоками по семь битов.
Я ничего не понял. :)
ds.Dante вне форума Ответить с цитированием
Старый 21.08.2009, 16:19   #7
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Значит так попробуй:
Код:
byte[] b = new byte[11];
// прочитай массив b
string s = System.Text.ASCIIEncoding.ASCII.GetString(b);
Hollander вне форума Ответить с цитированием
Старый 21.08.2009, 16:47   #8
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Цитата:
error C2664: 'int System::IO::BinaryReader::Read(cli: :array<Type,dimension> ^,int,int)' : cannot convert parameter 1 from 'cli::array<Type> ^' to 'cli::array<Type,dimension> ^'
Всё!!! Надоело! Перхожу на C#. :-D

А если серьезно, мне один хороший человек и правда предложил писать под .NET на C#. Благо портировать можно очень легко. Да и здорово сберегу и время и нервы. А то это не Си, а Brainfuck. :)

Последний раз редактировалось ds.Dante; 21.08.2009 в 16:53.
ds.Dante вне форума Ответить с цитированием
Старый 21.08.2009, 18:02   #9
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Хм, так я код на C# приводил
Hollander вне форума Ответить с цитированием
Старый 21.08.2009, 18:13   #10
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Я уже давно привык читать на 2-х чужих языках - английском и C#.
ds.Dante вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как прочитать из файла имя, фамилию разделенные пробелами и записать их в массив парами Rom@shka Общие вопросы C/C++ 2 13.12.2008 16:40
Как из юникодного текстового файла прочитать его построчно и неповторяющиеся слова ввести в ListBox? SkAndrew Общие вопросы Delphi 2 10.11.2008 22:14
Прочитать строку до конца Иллидан Общие вопросы C/C++ 3 28.09.2008 02:21
Не получается прочитать из файла...( Regloger Помощь студентам 3 09.12.2007 14:23
Как мне в асме прочитать данные из файла? lelicman Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 10.10.2007 09:24