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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2011, 19:55   #1
Crabobass
Пользователь
 
Регистрация: 06.03.2011
Сообщений: 23
По умолчанию Ошибочка...

Всем привет. Ребят, обьясните пожалуйста. Уже который раз сталкиваюсь с такой проблемой никак не могу понять в чем дело. Есть задача. Не будем вдаваться в подробности, в итоге нужно записать массив в файл используя TFileStream. В файл он записывает вот такое: # # % # # % % % % % # . Обьясните пожалуйста что к чему и как можно более подробнее. Заранее очень благодарен. Вот код.
Код:
type
  mas=array [0..10] of Integer;
procedure TForm1.btn1Click(Sender: TObject);
var
  f:TFileStream;
  a:mas;
  i,Size,tmp1:Integer;
  p:Pointer;
begin
  For i:=0 to 10 do
   begin
    randomize;
    a[i]:=Random(40);
   end;
  tmp1:=a[2];
  a[2]:=a[10];
  a[10]:=tmp1;
 p:=@a;
 F:=TFileStream.Create('Massiv.txt',FmCreate);
 f.Write(p^,SizeOf(a));
 f.Free;


end;
Если можно то напишите примерчик. Как записывать массивы что б небыло абракадабры в итоге. Надеюсь на вас.
Crabobass вне форума Ответить с цитированием
Старый 04.05.2011, 20:14   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, как вариант:
Код:
 f.Write(Mas[0],SizeOf(Mas));
p.s. меня терзают смутные сомнения!
А как Вы проверяете, что и как записалось?!
Ведь получаемый файл - БИНАРНЫЙ (двоичный)!
Если его посмотреть в блокноте (или в любой редакторе) - то и увидишь всякие подобные непечатные символы...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.05.2011, 20:17   #3
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Мудрить с указателями здесь нет нужды. Все в приведенном коде правильно, кроме одного:
Код:
// p:=@a;
 F:=TFileStream.Create('Massiv.txt',FmCreate);
 f.Write(a, SizeOf(a));
 f.Free;
А в файл он правильно записывает. В файл пишутся бинарные представления чисел. И мы не можем это представление связать с чем-то понятным, например, с цифровыми символами ("0", "1", ... "9").
Прик вне форума Ответить с цитированием
Старый 04.05.2011, 20:28   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

А почему бы и не StringList?
Человек_Борща вне форума Ответить с цитированием
Старый 04.05.2011, 23:59   #5
Crabobass
Пользователь
 
Регистрация: 06.03.2011
Сообщений: 23
По умолчанию

2Serge_Bliznykov. А никак я не проверял. Я наивно считал что и должны записываться символы которые и есть в массиве. Мы на паре пример такой разбирали. Ну вобщем то пришёл тогда моим страданиям конец. Спасибо Всем Огромное!
Crabobass вне форума Ответить с цитированием
Старый 05.05.2011, 09:18   #6
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну, как вариант:
Код:
 f.Write(Mas[0],SizeOf(Mas));
p.s. меня терзают смутные сомнения!
А как Вы проверяете, что и как записалось?!
Ведь получаемый файл - БИНАРНЫЙ (двоичный)!
Если его посмотреть в блокноте (или в любой редакторе) - то и увидишь всякие подобные непечатные символы...
В Hex редакторе, отображается соотвествующие байтам символы. То есть текстовый файл частный случай бинарного
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибочка при поиске. skytechkrutoi Общие вопросы .NET 1 20.01.2011 13:01
Объединить массивы (ошибочка) limaxY Помощь студентам 2 04.01.2011 22:27
где-то ошибочка.... ol`via Общие вопросы C/C++ 6 23.10.2010 14:48
StringGrid ошибочка Йогурт Общие вопросы Delphi 3 08.05.2009 14:07
Borland Pascal 8. Ошибочка...:( spein Помощь студентам 5 27.02.2009 17:19