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

Вниз

Сохранить в файл(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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.04 c
2-1126867568
Leschiy-D
2005-09-16 14:46
2005.10.16
Есть вопрос - как поместить на форму часы...


14-1127816829
Agent13
2005-09-27 14:27
2005.10.16
Кто пользуется сетью MSN Messenger через Миранду, отзовитесь


14-1127322382
Валёк
2005-09-21 21:06
2005.10.16
Величины


14-1127645246
Федор
2005-09-25 14:47
2005.10.16
Пейджер


2-1125684801
Anton S.
2005-09-02 22:13
2005.10.16
простой вопрос по API





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