Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

Сохранить в файл(Pascal)   Найти похожие ветки 

 
Серёга   (2005-09-11 17:06) [0]

вот есть массив A[1..100] нужно сохранить его в файл?
(B Pascal"e)


 
begin...end ©   (2005-09-11 17:12) [1]

var
 F: file;
 A: array [1..100] of TMyType;
begin
 Assign(F, "C:\MyFile.ext");
 Rewrite(F, 1);
 BlockWrite(F, A, sizeof(A))
end.


 
begin...end ©   (2005-09-11 17:19) [2]

И потом -- Close(F).


 
Серёга   (2005-09-11 17:42) [3]

спасибо.


 
Серёга   (2005-09-11 17:47) [4]

маленькая проблема,у меня в файле в кторый я всё это сохранил(myFile.txt) написана какая-то фигня..набор символов..


 
vrem   (2005-09-11 17:48) [5]

Серёга, а что ты там ожидал?


 
Серёга   (2005-09-11 17:49) [6]

может это быть,потому что у меня массив А типа single??


 
Серёга   (2005-09-11 17:53) [7]

ну вообщем у меня массив с числами,и хотел бы его сохранить в файл и исходном состоянии,тоесть массив : 1,2,3,4 и т.д. и в текстовом айле было сохранено как : 1,2,3,4,наверно сначала надо массив  записать в текстовую строку,а потом сохранить уже в файл?


 
vrem   (2005-09-11 17:54) [8]

суть [1] - из полученного файла можно создать записанный массив опять.
Пиши в текстовом виде, если хочешь, например, распечатывать .


 
Серёга   (2005-09-11 17:58) [9]

а можно его сразу сохранить в текстовом виде?


 
vrem   (2005-09-11 18:01) [10]

var
f: textfile; i:integer;
A: array [1..100] of single;
begin
Assignfile(F, "C:\MyFile.txt");  Rewrite(F);
for i:=1 to 100 do
Writeln(F, A[i]);
closefile(f);

если дробные не используются, то лучше целый тип использовать


 
Серёга   (2005-09-11 18:05) [11]

2vrem
дробные используются.
и ещё ругаеться что нет типа textfile при объявлении переменной F,там в uses может надо что нибудь написать?


 
vrem   (2005-09-11 18:24) [12]

ладно, я про дельфи написал, textfile в модуле system


 
Defunct ©   (2005-09-12 02:15) [13]

Серёга   (11.09.05 18:05) [11]

В Паскале нет TextFile, вместо него исп-ся тип Text.

const FileName = "myfile.txt";

function NoError:boolean;
begin
 if IOResult <> 0 then
    WriteLn("Файловая ощибка: ", IOResult);
 NoError := IOResult = 0;
end;

var
 F : Text;
 i : integer;
 A : array [1..100] of single;
begin
{$i-}
 Assign( F, FileName);  
 ReWrite( F );
 if NoError then
 begin
     for i:=1 to 100 do
     begin
        WriteLn(F, A[i]:0:5);
        if not NoError then break;
     end;
     Close( F );
  end;
{$i+}
end.


 
Германн ©   (2005-09-12 02:28) [14]

2 Defunct ©   (12.09.05 02:15) [13]

Вообще-то IOResult - "одноразовая" функция в Pascale (по крайней мере в TP, который я знал когдп-то).

Посему конструкция типа:
begin
if IOResult <> 0 then
   WriteLn("Файловая ощибка: ", IOResult);
NoError := IOResult = 0;
end;
не пройдет из-за того, что IOResult "сбросится" при первом его вызове и NoError - всегда будет "True"!

Используй else и прибудет тебе счастье!


 
Германн ©   (2005-09-12 02:45) [15]

Да, кстати! Второй вызов функции "NoError" в Pascale, имхо, вообще не оправдан! В "однозадачной" среде ДОС, вообще не могут возникнуть такие проблемы.


 
Джо ©   (2005-09-12 03:20) [16]


>  [15] Германн ©   (12.09.05 02:45)

Забыли о резидентных обработчиках прерываний. Чем черт не шутит, всяко может случится :)


 
Defunct ©   (2005-09-12 03:46) [17]

> Германн ©  (12.09.05 02:28) [14]
> Вообще-то IOResult - "одноразовая" функция в Pascale (по крайней мере в TP, который я знал когдп-то).

Писал по памяти, колебался на этой функции. Спасибо, что напомнил. Тогда переделываем ее так:

function NoError:boolean;
var
  IORslt : integer;
begin
  IORslt := IOResult;
  if IORslt <> 0 then
      WriteLn("Файловая ощибка: ", IORslt);
  NoError := IORslt = 0;
end;


 
Defunct ©   (2005-09-12 03:48) [18]

Германн ©   (12.09.05 02:45) [15]

Могут еще как, к примеру:
- DISK FULL



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

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.03 c
1-1127394234
QwertyKz
2005-09-22 17:03
2005.10.16
штрих код


1-1127737984
*Pavel
2005-09-26 16:33
2005.10.16
Аналог ProcessMessage


10-1105790489
aus
2005-01-15 15:01
2005.10.16
Symantec Antivirus Server


2-1127071347
bushmen
2005-09-18 23:22
2005.10.16
MessageDlg


1-1127814627
BaxTMaH
2005-09-27 13:50
2005.10.16
Клавиша Backspace