Главная страница
    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.46 MB
Время: 0.084 c
4-1121883695
Wm.DIGGER
2005-07-20 22:21
2005.09.11
Hook на изменения Clipboard а ... ?


14-1124285409
Piter
2005-08-17 17:30
2005.09.11
Что выбрать из недорогого, помогите советом


3-1121670371
passs
2005-07-18 11:06
2005.09.11
сохранение изменённых данных в БД


4-1122024296
Zak3D[@Tm]
2005-07-22 13:24
2005.09.11
Как удалить дирректорию с файлами?


14-1124362119
kyn66
2005-08-18 14:48
2005.09.11
Программа для защиты CD от копирования и виртуализации





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