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

Вниз

Массив записей   Найти похожие ветки 

 
pupapumQ   (2006-02-06 20:03) [0]

Моя проблема заключается в следующем. Мне необходимо сохранить в файл массив такой записи :
type
 TQuestions = packed record
   Qustion:string;
   Answer1:string;
   Answer2:string;
   Answer3:string;
   Answer4:string;
   RightAnswer:string;
   Picture:string;
end;

Прошу мастеров показать пример с сохранением и загрузкой. Заранее спасибо.


 
Anatoly Podgoretsky ©   (2006-02-06 21:02) [1]

Зачем тебе сохранять указатели?


 
Kolan ©   (2006-02-06 21:11) [2]

Дин массивы(строки) сохраняют так:

procedure WriteStringToStream(FS: TFileStream; S: string);
var
 L: Longint;
begin
 if FS <> nil then
 begin
   L := Length(S);
   FS.WriteBuffer(L, SizeOf(L));
   FS.WriteBuffer(S[1], L);
 end;
end;


а читают так

procedure ReadStringFromStream(FS: TFileStream; var S: string);
var
 L: Longint;
begin
 FS.ReadBuffer(L, SizeOf(L));
 if L > 0 then
 begin
   SetLength(S, L);
     FS.ReadBuffer(S[1], L);
 end;
end;


 
Kolan ©   (2006-02-06 21:13) [3]

Я думаю что вам понятно, что подобным образом надо сохранить каждое поле записи...

И так для каждогоэлемента массива...


 
Eraser ©   (2006-02-06 21:22) [4]


> pupapumQ   (06.02.06 20:03)

Hint:
используй вместо string тип ShortString... правда такая строка ограничена 255 символами.


 
Desdechado ©   (2006-02-06 21:24) [5]

проще использовать строки фиксированной длины, тогда можно пользоваться типизированными файлами
var F: File of TQuestions;


 
Desdechado ©   (2006-02-06 21:25) [6]

Question:string[255];
Answer1:string[255];


 
Anatoly Podgoretsky ©   (2006-02-06 21:42) [7]

ar[N] of char и нет рубежа в 255


 
pupapumQ   (2006-02-06 21:47) [8]

Я сохраняю данные в файл.
Масив у меня Mas:array N of T(Запись эта)
мне нужно весь масив записей засунуть в один файл и при необходимости прочитать все это, переписав все из файла обратно в масив записей. Спасибо.


 
Desdechado ©   (2006-02-06 21:50) [9]

> ar[N] of char и нет рубежа в 255
тогда длина зиписи будет произвольная, а с ней типизированный файл не катит, AFAIR


 
sniknik ©   (2006-02-06 21:58) [10]

длинна будет фиксированная... это же массив, а не строка.


 
Desdechado ©   (2006-02-06 22:11) [11]

тьфу, точно :)


 
palva ©   (2006-02-06 22:25) [12]

> мне нужно весь масив записей засунуть в один файл и при необходимости прочитать все это, переписав все из файла обратно в масив записей

Если вам нужно только последовательное чтение, а не понадобится ни с того ни с сего, например, читать 328-ю запись, а затем модифицировать 118-ю запись, то вы вполне можете использовать переменную длину записи, как предложил Kolan.


 
pupapumQ   (2006-02-07 09:59) [13]

Мне нужно весь массив записей(структур) сохранить в один файл. Мне не надо выдергивать что-то с какой-либо позиции, мне нужно читать все целиком и сразу из файла. Как мне сохранить это в одной програме и прочитать все в другой програме?


 
MBo ©   (2006-02-07 10:01) [14]

поскольку в структуре - только строки, ничего не мешает воспользоваться TStringList


 
Fay ©   (2006-02-07 10:09) [15]

2  MBo © [14] (07.02.06 10:01)
Это пока не появятся лайн-бряки


 
pupapumQ   (2006-02-07 10:14) [16]

Ой ну неужели я так сложно все объясняю.... Нах мне стринглист со своим текстовым файлом, желательно все через TFileStream, но как это все читать и записывать. Точнее все записывается, но я не знаю правильно ли ? Но вообщем не читается. Вы покажите плиз пример с записью и загрузкой этого хлама.


 
evvcom ©   (2006-02-07 10:27) [17]

Тебе уже показали, и кучу всего наговорили для размышления. Если ты не хочешь включать свои мозги, то это твои проблемы.


 
Fay ©   (2006-02-07 10:29) [18]

2 pupapumQ [16] (07.02.06 10:14)
Попробуй почитать ответы. [2], к примеру.
А ещё лучшчше ~10 сек. подумать (обязательно головой)


 
Digitman ©   (2006-02-07 10:38) [19]

var
 MyQuestionsArray: array[M..N] of TQuestions;

..

procedure WriteRecordToStream(Rec: TQuestions; Stream: TStream);
begin
 WriteStringToStream(Rec.Qustion, Stream);
 WriteStringToStream(Rec.Answer1, Stream);
 WriteStringToStream(Rec.Answer2, Stream);
 WriteStringToStream(Rec.Answer3, Stream);
 WriteStringToStream(Rec.Answer4, Stream);
 WriteStringToStream(Rec.RightAnswer, Stream);
 WriteStringToStream(Rec.Picture, Stream);
end;

procedure ReadRecordFromStream(Stream: TStream; var Rec: TQuestions);
begin
 ReadStringFromStream(Stream, Rec.Qustion);
 ReadStringFromStream(Stream, Rec.Answer1);
 ReadStringFromStream(Stream, Rec.Answer2);
 ReadStringFromStream(Stream, Rec.Answer3);
 ReadStringFromStream(Stream, Rec.Answer4);
 ReadStringFromStream(Stream, Rec.RightAnswer);
 ReadStringFromStream(Stream, Rec.Picture);
end;

//запись
for i:= M to N do
 WriteRecordToStream(MyQuestionsArray[i], MyFileStream);

//чтение
for i:= M to N do
 ReadRecordFromStream(MyFileStream, MyQuestionsArray[i]);


 
pupapumQ   (2006-02-07 11:01) [20]

Спасибо за все.



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

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

Наверх





Память: 0.49 MB
Время: 0.041 c
2-1139159387
Apollon_604
2006-02-05 20:09
2006.02.26
Hide-Show


15-1139151076
Вячеслав Бессонов
2006-02-05 17:51
2006.02.26
TOpenDialog и TSaveDialog


2-1139303207
Bratskiy
2006-02-07 12:06
2006.02.26
Коллекции


3-1135777688
Dimankos
2005-12-28 16:48
2006.02.26
mysql и delphi


2-1139296964
875
2006-02-07 10:22
2006.02.26
переменные





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