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

Вниз

Программирование в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.011 c
14-67459
Seldon
2003-04-05 21:34
2003.04.21
TextConv


3-67139
Andrey V.
2003-04-03 06:37
2003.04.21
Как работать на CD


3-67100
Sergey
2003-04-01 12:03
2003.04.21
ADO тслеживание изменения записей в таблице


3-67117
opoloXAI
2003-04-02 17:47
2003.04.21
DBGrid Selected


7-67595
Демонов Е.В.
2003-02-26 15:46
2003.04.21
CMOS





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