Форум — Ответы     (  К темам )
 ?  Иван: Работа с текстовым файлом при помощи TStringList (07-02-2003 11:18:46)
Люди!,подскажите,у меня такая задача:
В файл нужно записывать данные о пользователе:Имя-время
файл не должен содержать больше 10-ти записей,причем они должны сортироваться(по возрастанию времени)
Как это проще сделать?
Почитал про TstringList,но там сортировка по алфавиту.
Буду очень благодарен!
 Павел (08-02-2003 21:27:47)
Смотря в каком виде и откуда Вы берете данные, с базы данных или
получаете из формы.
Если из базы данных, то и хранить удобнее в базе данных, а не в текстовом файле
Если из формы, то можно организовать структуру или класс

struct POLZ {
TDateTime dt;
AnsiString SName;
... // и другие данные о пользователе
};

struct POLZ myPOLZ;
struct POLZ mass[10];

Если заранее длина массива неизвестна, можно организовать не массив, а вектор структур
#include <vector.h>
vector <POLZ> myp;

Данные получаем из формы:
Дата — из компонетнта TDateTimePicker заносим в mass[i].dt
Имя — из TEdit в mass[i].SName и т.д.

потом организуете сортировку внутри структуры по dt

и записываете структуру в файл

int ih;
ih = FileCreate("myFile.txt");
for(int i=0; i<10; i++) {
AnsiString s = DateToStr(mass[i].dt) + mass[i].SName + ...;
char buff[100]; for(int j=0; j<100; j++) buff[j]=0;
strcpy(buff,s.c_str());
FileWrite(ih, buff ,100);
}
FileClose(ih);

....

или

TStringList *sl = new TStringList();

for(int i=0; i<10; i++) {
AnsiString s = DateToStr(mass[i].dt) + mass[i].SName;
sl->Add(s);
}

sl->SaveToFile("myFile.txt");

delete sl;

....