Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.21;
Скачать: CL | DM;

Вниз

Программирование в Delphi   Найти похожие ветки 

 
Irina   (2003-04-04 09:09) [0]

Как из текстового файла скопировать последнюю строку?


 
MBo ©   (2003-04-04 09:11) [1]

файл большой?
Если нет, читай readln до конца файла и используй последнюю строку или TStringList.ReadFromFile


 
Внук ©   (2003-04-04 09:53) [2]

Открыть текстовый файл.
Прочитать по очереди все строки.
Последнюю скопировать (куда, неизвестно).
Закрыть файл.


 
Irina   (2003-04-04 09:55) [3]

Внучек, а по подробней можно? :)


 
Skier ©   (2003-04-04 09:57) [4]

>Irina
var
AStrList : TStringList;
begin
AStrList := TStringList.Create;
try
AStrList.LoadFromFile(...FilePath...);
ShowMessage(AStrList[AStrList.Count - 1]);
finally
AStrList.Free;
end; //try
end;


 
Palladin ©   (2003-04-04 10:05) [5]

открыть в FAR
найти последнюю строчку
выделить
нажать Ctrl-Ins


 
Внук ©   (2003-04-04 10:06) [6]

Открываем текстовый файл.
Подробно (не пропусткая ни одной строчки) читаем его.
Последнюю строку копирум в неизвестное по условию место очень подробно, не пропуская ни одной буквы.
Закрываем файл.


 
alexteam ©   (2003-04-04 10:11) [7]


> Открываем текстовый файл.
> Подробно (не пропусткая ни одной строчки) читаем его.
> Последнюю строку копирум в неизвестное по условию место
> очень подробно, не пропуская ни одной буквы.
> Закрываем файл.


ты бы меня видел :)))


 
Anatoly Podgoretsky ©   (2003-04-04 10:13) [8]

var
F: TextFile;
S: string;
begin
AssignFile(F,"d:\Path\xxx.txt");
Reset(F);
S


 
Anatoly Podgoretsky ©   (2003-04-04 10:14) [9]

while Eof(f) do begin
ReadLn(F,S);
end;


 
Думкин ©   (2003-04-04 10:15) [10]

not(Eof(f))?


 
pasha676   (2003-04-04 10:18) [11]

2Думкин
Понятное дело. Впрочем когда такие вопросы задают могут не знать о EoF запросто.


 
Anatoly Podgoretsky ©   (2003-04-04 10:20) [12]

Думкин © (04.04.03 10:15)
Да, надо внимательнее быть :-(

pasha676 (04.04.03 10:18)
Многие про него и текстовые файлы забыли или не знали вообще.


 
alexteam ©   (2003-04-04 10:20) [13]

если файл по типу textfile то так

за неимением делфей пишу от руки :)) но работать должно

function laststring(filename:string):string;
var
fil:text;
last_string:string;
begin
if fileexists(filename) then
begin
assignfile(fil,filename);
reset(fil);
while not eof(fil) do
readln(fil,last_string);
result:=last_string;
end
else result:="";
end;


использование

showmessage(laststring("c:\log.txt"));

пиво оставте при себе :))


 
Palladin ©   (2003-04-04 10:24) [14]


> alexteam © (04.04.03 10:20)

а по твоему о чем речь была с самого начала?
ЗЫ "Буратино" тебе, а не пиво...


 
alexteam ©   (2003-04-04 10:33) [15]

> Palladin
ты про фар вспомни :))))
гы а текстовые файлы бывают разные :) ведь file of char тож текстовый :)) а читается чуть по другому


 
Anatoly Podgoretsky ©   (2003-04-04 10:34) [16]

alexteam © (04.04.03 10:20)
По сути почти правильно, но есть ии ошибки и амечания

Ошибка 1 - остался открытый файл

Замечание 1
fil:text; -> fil: TextFile; а то можно горя хлебнуть

Замечание 2
readln(fil,last_string);
result:=last_string;

readln(fil,Result);

Замечание 3
Лучше не прятать ошибку отсутствия файла, а позволить системе возбудить исключение.


 
Palladin ©   (2003-04-04 10:40) [17]

фар это прикол...

самый оптимальный способ предложил MBo

file of char и textfile и text это все представление delphi
файл же все время один и тотже...


 
alexteam ©   (2003-04-04 10:45) [18]


> Anatoly Podgoretsky

спсибо про закрытие файла забыл :)
readln(fil,Result); мля :(

в общем учитывая замечания

function laststring(filename:string;var last_string:string):boolean;
var
fil:text;
begin
if fileexists(filename) then
begin
assignfile(fil,filename);
reset(fil);
while not eof(fil) do readln(fil,last_string);
closefile(fil);
result:=true;
end
else result:=false;
end;

использование

str:string;
......................................

if laststring("c:\log.txt",str) then
showmessage(str) << используем полученую строку
else showmessage("file not found"); << нету файла


так и хочется ctrl+f9 нажать а нету :((


 
alexteam ©   (2003-04-04 10:47) [19]


> Palladin © (04.04.03 10:40)

а читаются они члучайно не по разному char и text
(я на этом "собаку сьел")


 
Palladin ©   (2003-04-04 10:55) [20]

если перенести понятие текстового файла на программирование, то:

file of char это типизированый файл содержащий эелементы типа char
text (textfile) - это файл рассматривающийся как входной файл для текста с разделителем CRLF

и чтение из них различается по реализиции..
хотя для тебя это выглядит прозрачно...


 
Palladin ©   (2003-04-04 10:56) [21]

соответственн твое утверждение что file of char это текстовый файл не верно


 
alexteam ©   (2003-04-04 11:25) [22]

> Palladin
рядовой пользователь может не отличить обычный text файл от char файла особенно если просматривает их notepad-ом(99.9% что ты с начала тож об этом не подозревал) а вот с точки зрения програмиста это совсем два разных типа файлов которые отличаются по реализации чтения/записи в первую очередь
короче решение есть, если там ошибки :))) (т.к. не компилировалось) то сообщай о них


 
Anatoly Podgoretsky ©   (2003-04-04 11:39) [23]

Хранение и чтение, разные вещи.
Чтение это интерпритация файла, считаем ли мы его текстовым или нет.


 
Palladin ©   (2003-04-04 11:42) [24]

ну а это чьи слова...

ведь file of char тож текстовый

я до тебя пытаюсь донести то что совсем не обязательно он текстовый

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

delphi32.exe это тоже file of char
но при использовании textfile найдет коса на камень...

и на чем ты тут собаку то съел?
при понимании того что делаешь собаку есть не придется...


 
alexteam ©   (2003-04-04 11:42) [25]

> Anatoly Podgoretsky
1. я тебя на чате давно не видел где пропал ? :)
2. ошибок и замечаний нету ? :))


 
alexteam ©   (2003-04-04 11:45) [26]

> Palladin
не про собаку расказывать не буду :)) жуть, и еще невкусная :))))) так ты и не ответил по коду замечаний нету ???


 
Palladin ©   (2003-04-04 11:53) [27]

замечание одно...
если в конце файла пустая строка, то выходит файла нет, и будешь ты рвать и метать, "Да как же так!!! Вот же он!!!!"


 
alexteam ©   (2003-04-04 11:56) [28]

ты код повнимательней посмотри :)))


 
alexteam ©   (2003-04-04 11:58) [29]

а особенно
if fileexists(filename) then
begin
...............
result:=true;
end
else result:=false;



 
alexteam ©   (2003-04-04 11:59) [30]

мож мне еще коментарии написать ?????


 
Palladin ©   (2003-04-04 12:03) [31]

хе...
вторая версия нормльная, но таки долгая...

function LastString(p_strFileName):string;
begin
with TStringList.Create do
try
LoadFromFile(p_StrFileName);
Result:=Strings[Count-1];
finally
Free;
end;
end;


 
alexteam ©   (2003-04-04 12:05) [32]

обработку ошибки "file not found" забыл :))


 
Palladin ©   (2003-04-04 12:10) [33]


> alexteam © (04.04.03 12:05)

при вызове

try
strLastString:=LastString("MyFile");
except
обработка ошибки по поводу не найденого файла...
end;


 
alexteam ©   (2003-04-04 12:11) [34]

а юзверь об этом как узнает ???? гыыыы


 
Palladin ©   (2003-04-04 12:11) [35]

Почитай замечание 3 от
Anatoly Podgoretsky © (04.04.03 10:34)
верное между прочим замечание...


 
Danilka ©   (2003-04-04 12:12) [36]

alexteam © (04.04.03 12:05)
нет не забыл ;))

Palladin © (04.04.03 12:03)
но вот-это забыл:
function LastString(p_strFileName :string):string;


 
Palladin ©   (2003-04-04 12:13) [37]


> alexteam © (04.04.03 12:11)

хм
для особо одаренных
try
strLastString:=LastString("MyFile");
except
Application.ShowMessage("File not found","Error");
end;


 
alexteam ©   (2003-04-04 12:13) [38]

вызовет твою функцию нифига не получит и будет продолжать обрабатывать пустую строку в последующей части кода :))


 
Danilka ©   (2003-04-04 12:13) [39]

alexteam © (04.04.03 12:11)
сделай просто вот-так:

strLastString:=LastString("MyFile");

без try...except

и сразу узнаешь ;))


 
Palladin ©   (2003-04-04 12:14) [40]


> Danilka © (04.04.03 12:12)

хе :) вот это точно косяк...



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

Текущий архив: 2003.04.21;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.024 c
4-67647
Eug201
2003-02-11 08:48
2003.04.21
SetWindowsHookEx(WH_MOUSE,@MouseHook,HInstance,0)


1-67299
_MAX_
2003-04-11 17:33
2003.04.21
Закрывание ToolBar


14-67438
Supreme 2
2003-04-03 22:27
2003.04.21
Опять чёрная полоса чтоли....??


6-67413
Kremen
2003-02-28 05:12
2003.04.21
Определение IP тачи имея только её имя


3-67163
Max79
2003-04-03 10:47
2003.04.21
Запрос в БД по полю Timestamp