Главная страница
    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.016 c
1-1124305184
Tihinen
2005-08-17 22:59
2005.09.11
Виртуалка vs Корявый алгоритм


4-1121187841
GEN++
2005-07-12 21:04
2005.09.11
Включение/выключение устройства


3-1122525099
Ольга
2005-07-28 08:31
2005.09.11
Перевод пользовательской функции с T-SQL на PL/SQL


9-1116476897
Slavikk
2005-05-19 08:28
2005.09.11
GLScene Как сделать квестовое перемещение


3-1122644556
Silver ...
2005-07-29 17:42
2005.09.11
Панели DBCtrlGrid цветом из Базы





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