// немного псевдокода
int i = 0;
Timer()
{
i++; // или ++i - в зависимости от вашего желания
FileSave(IntToStr(i)+".txt");
}
СОХРАНЕНИЕ ТЕКСТА ИЗ MEMO В [I]-ТЫЙ ФАЙЛ
Такая ситуация: в течении минуты в Мемо посекундно аносятся строки....как их сохранить в файл я в курсе, но!!!! надо каждую минуту сохранять новые данные в новый файл...то есть : 1.txt , 2.txt.....i.txt....может кто сталкивался или знает как это сделать?....заранее благодарен
Код:
Ну короче перед каждым сохранение итерацию делаешь и создаешь файл с таким именем )
спасибо...щас попробую
1. Или после сохранения очистить memo:
memo1->Lines->Clear();
2. или ввести пременную(lastNdx) и сперва в OnCreateFrorm присвоить ей 0;
В обработчике:
Код:
int N = Memo1->Lines->Count;
if(lastNdx < N)
{
AnsiString eol = "\r\n";
TDateTime dt = TDateTime::CurrentTime();
AnsiString oldFormat = LongTimeFormat;
LongTimeFormat = "hh_mm_ss";
AnsiString fileName = dt.TimeString() + ".txt";
LongTimeFormat = oldFormat;
int iF = FileCreate(fileName);
for(; lastNdx < N; lastNdx++)
{
FileWrite(iF,
Memo1->Lines->Strings[lastNdx].c_str(),
Memo1->Lines->Strings[lastNdx].Length());
FileWrite(iF, eol.c_str(), 2);
}
FileClose(iF);
}
if(lastNdx < N)
{
AnsiString eol = "\r\n";
TDateTime dt = TDateTime::CurrentTime();
AnsiString oldFormat = LongTimeFormat;
LongTimeFormat = "hh_mm_ss";
AnsiString fileName = dt.TimeString() + ".txt";
LongTimeFormat = oldFormat;
int iF = FileCreate(fileName);
for(; lastNdx < N; lastNdx++)
{
FileWrite(iF,
Memo1->Lines->Strings[lastNdx].c_str(),
Memo1->Lines->Strings[lastNdx].Length());
FileWrite(iF, eol.c_str(), 2);
}
FileClose(iF);
}
Цитата:
FileSave(IntToStr(i)+".txt");
а как дописать чтоб она сохранялась в папку temp, например. т.е. путь был бы такой temp\\i.txt
и как потом работать с каждым файлом?
Цитата:
FILE* f = fopen(IntToStr(in)+".txt","+w");
так у меня не хочет работать. ругается что не может сконвертить ансистринг в конст чар
Естественно, ругается. Требует указатель на массив символов, а ему пихают AnsiString.
Ведь класс AnsiString не имеет метода автоматического приведения operator char*(void) - для этого нужно вручную вызывать метод c_str(void) const.
и как потом работать с каждым файлом?
Код:
FILE* f = fopen(IntToStr(in)+".txt","+w");
так у меня не хочет работать. ругается что не может сконвертить ансистринг в конст чар[/QUOTE]
Код:
FILE* f = fopen((IntToStr(in)+".txt").c_str(),"+w");
Правда, не очень красивый код получается.
Чуть не забыл: не вздумай использовать значение, возвращённое .c_str() в качестве lvalue, иначе неожиданные эффекты при работе программы гарантированы.