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

Вниз

Удаление последней строки в текстовом файле   Найти похожие ветки 

 
jiny   (2005-08-17 09:00) [0]

Использую для r/w AssignFile()
 assignFile(MyFile,TmpDateTitle);
 Rewrite(Myfile);
 writeln(MyFile,"text");
 closeFile(MyFile);


Причем все это создается в цикле и за раз выходит по 8-10 файлов, где постоянно нужно убирать пустую строку в конце,
т.к. файлы предназначены для переноса в 1С в виде проводок,
ERT-шник писали не мы, да и пароль на нем стоит. Если в файле осталась пустая строка импорт данных прекращается.
Как быть ?


 
alpet ©   (2005-08-17 09:23) [1]

Загружай файл в TStringList, потом сохраняй в новый файл все, за исключением последней строки..

var
 list: TString;
 s: string;
 t: Text;
begin
list := TStringList.Create;
try
 list.LoadFromFile (SomeFileName);
 if list.count > 0 then list.Delete (list.count - 1);
 list.SaveToFile (SomeFileName);
finally
 list.Free;
end;
end;


 
jiny   (2005-08-17 09:57) [2]

В принципе тоже вариант, а процедура удаления напрямую из файла есть ?


 
Leonid Troyanovsky ©   (2005-08-17 10:21) [3]


> jiny   (17.08.05 09:57) [2]
> В принципе тоже вариант, а процедура удаления напрямую из
> файла есть ?


SetFilePointer, SetEndOfFile.

Только, использовать Assign &etc смысла особого нет.
Проще TFileStream. Т.е., перемещаем на позицию (размер файла - размер буфера достаточно большого размера, куда  поместятся
все пустые строки), читаем в буфер, определяем положение #13#10 (или что там) после которого нет текста и ставим конец ;)

--
Regards, LVT.


 
jiny   (2005-08-17 10:30) [4]

Попробовал через Stringlist, все данные сначала закачал туда, а затем вызвал TmpStringFile.SaveToFile(Somefile), что самое непонятное, когда смотрю последнюю строку в стринлисте, он показывает реально последнюю строку, где нет пустой строки, но
после .SaveToFile - добавляет в конец файла пустую строку.


 
jiny   (2005-08-17 10:31) [5]

Leonid Troyanovsky ©   (17.08.05 10:21) [3]
спасибо, щас буду пробовать


 
alpet ©   (2005-08-17 11:27) [6]

jiny   (17.08.05 10:30) [4]

Это означает, что после сохранения StringList - в конец файла добавляется 2 байта - CR и LF, так-что тебе остается укоротить файл на эти два байта. Но вприципе с TFileStream это выйдет конечно побыстрее и проще.


 
kblc ©   (2005-08-17 12:37) [7]

assignFile(MyFile,TmpDateTitle);
Rewrite(Myfile);
write(MyFile,"text");
closeFile(MyFile);


 
George ©   (2005-08-17 23:10) [8]

А если через Мему?

Memo1.lines.loadfromfile(yourfilename);
memo1.lines.delete[memo1.lines.count];
memo1.lines.savetofile(yourfilename);

Вроде нихде не ошибся...


 
Наиль ©   (2005-08-18 00:27) [9]

>[8]
Ошибся! Должно быть Count-1.
Но в любом случае, ты повторил метод [1], только с визуальной компанентой, что само по себе, не есть гуд.
Лучший вариант по-моему [7]. Лучше правильно записать, чем исправлять ошибки.
Мой вариант укорочения на 2 байта (для разнообразия):
Var
f:File of Byte;
begin
AssignFile(f,"1.txt"); Reset(f);
Seek(f,FileSize(f)-2);
Truncate(f);
CloseFile(f);
end;



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

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

Наверх





Память: 0.47 MB
Время: 0.012 c
4-1122032517
Zak3D[@Tm]
2005-07-22 15:41
2005.09.11
Как запустить другое приложение?


5-1097758322
Slava111
2004-10-14 16:52
2005.09.11
PageControl со вкладками с левой стороны


3-1122510926
Polyak
2005-07-28 04:35
2005.09.11
Запросы - запросы ???


1-1124277300
2ksion
2005-08-17 15:15
2005.09.11
Работа с памятью правильно или нет?


14-1123689907
kamerer
2005-08-10 20:05
2005.09.11
Документация по компонентам VCL





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