Pliki

0

Pewnie już ten temat był poruszany, ale nie chce mi się szukać ;-). Jak dopisać do coś do istniejącego pliku na jego koniec?? Czyli mam sobie w pliku textowym dwie linijki i chcę je sobie zostawić i dopisać coś, jako trzecią. Procedura ReWrite usuwa mi te dwie linijki... Help me!! You're my only hope! ;-)

0

w jednym z artykulow Adama Boducha jest cos takiego :-)

var
TF : TextFile;
begin
AssignFile(TF, 'C:\plik.txt');
try
Append(TF);
Writeln(TF, ''); // jedna linia przerwy
Writeln(TF, 'Oto kolejna linia');
finally
CloseFile(TF);
end;
end;---=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

dzięx wielkie.. Właśnie o coś takiego chodziło, chwilowo działa ;-)

0

Jeszcze pytanko, potrzebuję sprawdzić, czy plik o danej nazwie istnieje, jeśli nie, to trza go stworzyć(jak pliku nie ma, to powyższa procedurka się wywala...)

0

var
jakisplik: textfile
begin
AssignFile(jakisplik, 'plik.txt');
if not FileExists('plik.txt') then ReWrite(jakisplik)
else Append(jakisplik);
end;

Nie ma to jak gadać do siebie ;-)

0

ja bym zrobil tak :-)

var
TF : TextFile;
begin
AssignFile(TF, 'C:\plik.txt');
try
if FileExists('C:\plik.txt') then
Append(TF)
else
ReWrite(TF);
Writeln(TF, '');
Writeln(TF, 'Oto kolejna linia');
finally
CloseFile(TF);
end;
end;

jezeli plik.txt istnieje procedura dopisuje do niego linie a jezeli nie istnieje to tworzy go i tez dopisuje linie :-)---=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

W zasadzie moja procedurka od Twojej różni się jedyjnie tym, że użyłeś Try i Finally. Do czego to w zasadzie służy??

0

Try służy do obsługi wyjątków. Np gdy chcemy napisac kalkulator to gdy użytkownik bedzie chcial cos podzielic przez zero wtedy wyskoczy jakis dziwny blad i program sie wyloczy...
Aby temu zapobiec mozna uzyc wlasnie tego try:

try
wynik:=liczba1/liczba2;
except showmessage('nie dziel przez zero!!!')

zamiast except mozna uzyc finally, ale wtedy komunikat wyswietli sie nawet jak nie bedzie wyjatku :-)

Pozdrawiam @LL;--Rafalrs

0

Sposob przez was podany to lama, najlepiej to zrobic tak:

procedure tform1.znajdzlinie;
var
TF : textFile;
Ilosclinii : integer;
begin
AssignFile (TF, 'C:\plik.txt'); /Przypisuje plik do zmiennej
reset(TF); /Otwiera plik
while not seekeof(TF) do
begin
ilosclinii:=ilosclinii+1;

    end;
   writeln('zapisz na koncu pliku'); 
   closefile(TF);
end;

funkcja seekeof wskazuje czy koniec pliku textowego zostal osiagniety

0

Voodo napisał:
Sposob przez was podany to lama, najlepiej to zrobic tak:
&gt
&gtprocedure tform1.znajdzlinie;
&gt var
&gt TF : textFile;
&gt Ilosclinii : integer;
&gt begin
&gt AssignFile (TF, \'C:\\plik.txt\'); /Przypisuje plik do zmiennej
&gt reset(TF); /Otwiera plik
&gt while not seekeof(TF) do
&gt begin
&gt ilosclinii:=ilosclinii+1;
&gt
&gt end;
&gt writeln(\'zapisz na koncu pliku\');
&gt closefile(TF);
&gt end;
&gt
&gt
&gtfunkcja seekeof wskazuje czy koniec pliku textowego zostal osiagniety

Voodo za to twój spsób jest po prostu Boski. Po pierwsze zamiast seekof wystarczy użyż eof ale mniejsza z tym a poza tym co miało oznaczac writeln(\'zapisz na koncu pliku\'); powinno chyba być writeln(tf,\'zapisz na koncu pliku\');

0

Sposob przez was podany to lama

stary zastanow sie co ty mowisz, niby ten twoj sposob jest lepszy?
zobacz ile bledow zrobiles. Jednym i podstawowym bledem jest pisanie w taki sposob komentarzy:
/komentarz
komentarze pisze sie tak:
//komentrarz
lub tak:
{komentarz}
lub tak:
(komentarz)

ps. denerwuja mnie ludzie ktorzy naduzywaja slowa "lama", "lamer" itp.---=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

hehe. Eof jest procedurą uzywaną w przypadku plików dowolnego typu a seekeof tylko i wyłącznie dla plików tekstowych.Jednak użycie eof nie spowoduje żadnych nieporządanych skutków.(niewieżysz to zajrzyj do help'a, dlaczego tak jest nie wiem, ale skoro ktos mądry tak pomyślał to musi to mieć sens). Zastosowanie funkcji seekeof(eof) jest jedynym rozsądnym rozwiązaniem(co byście zrobili w przypadku nie wiadomej ilości linii?).
Ok następnym razem nie będe użwał słów lam*. Poza tym nie czepiajcie się pierdół typu jeden slash zamiast dwoch i braki kilku liter, nie pisze książki.

0

po co uzywac jakiejs petli i tego SeekEof czy tam Eof skoro procedura Append(TF) ustawia kursor na koncu pliku---=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

VooDoo cos ci powiem
wykonanie mojej procedurki dla pliku zawierajacego 10 linii zajelo 4,091 ms
natomiast dzieki twojej procedurce program sie zawiesil :[[
wykonanie mojej procedurki dla pliku zawierajacego 100 linii zajelo 4,36 ms
natomiast dzieki twojej procedurce malo komp sie nie wierzchnal :[[

no i co ty na to????????????

NASTEPNYM RAZEM ZANIM NAZWIESZ CZYJAS PROCEDURKE LAMERSKA ZASTANOW SIE CZY SAM NIE NAPISALES GORSZEJ !!!!!!!!!!!!!!!!!!!!!!!!!!!

to by bylo na tyle. Temat uwazam za zamkniety
---=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

Ehh, dobra, to już wiem, jak to zrobić ;-). Jeszcze pytanko, jak sprawdzić, czy dany katalog istnieje, a jak nie, to go stworzyć??

0

Dover napisał:
jak sprawdzić, czy dany katalog istnieje,

function DirectoryExists(const Directory: string): Boolean;

a jak nie, to go stworzyć??

function CreateDir(const Dir: string): Boolean;

(oba w SysUtils, pierwszy takze w (przestarzalym) FileCtrl)--Pawel

Delphi6

0

Dzięx ;-)

0

Ale mam dziwną sprawę, ponieważ funkcja DirectoryExists mi nie działa, chociaż sprawdziłem w helpie i powinno być wporządku

0

Pozdrowienia dla LKS. Chlopie masz racje, jak skonczony burak uzylem funkcji append zamiast reset, ale z pętlą się mylisz. Ma ona służyć do wstawienia łancucha w określonej linii. Dzięki za krytykę i sorry za brak uprzejmości {browar} .

0

hehe kłudżcie sie wiecej to sie wiecej dowiem :)
na temat zapisywania pliku
a wiecie moze jak stworzyc i zapisac plik w formacie html taki ze jak istnieje to albo do wyboru dopisze pare lini albo nadpisze albo automatycznie stworzy kolejny plik z indexem najlepiej jak by to bylo hmm z datą
indexy jezeli ten sam dzien &gt&gt 1.12.12.02
2.12.12.02
3.12.12.02
tworze program ktory robi raporty a dokladniej zapisuje liste katalogow z plyty do html`a ale nie wiem jak zrobic zeby zapisał te pliki w taki wlasnie sposob
moze ktos wie jeszcze przy okazji jak stworzyc plik tymczasowy ---= pozdrawiam Oskar =- (delphi 6 GG:2792614)

0

Chlopie masz racje, jak skonczony burak uzylem funkcji append zamiast reset,
to ja uzylem Append(TF)

ale z pętlą się mylisz. Ma ona służyć do wstawienia łancucha w określonej linii.
z niczym sie nie myle!! tu chodzilo o dopisywanie linii na koncu pliku a nie gdzies w srodku!!!!!
a skoro sie myle to moze powiesz dlaczego po wykonaniu twojej procedurki program sie zawiesza i wcale zadnej linii nie dopisuje???????

juz nie musisz sie tlumaczyc bo to tylko na twoja niekorzysc wychodzi :-)
---=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

Ludzie, ludziska!! Moglibyście się na chwilkę nie kłócić?? Mam następny problem. Macie może pomysł, dlaczego nie działa mi funkcja DirectoryExists??(używam Delphi 4)...

0

w jakims faq znalazlem to:

function DirectoryExists(const Name: string): Boolean;
var
Code: Integer;
begin
Code := GetFileAttributes(PChar(Name));
Result := (Code -1) and (FILE_ATTRIBUTE_DIRECTORY and Code 0);
end;---=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

Macie może pomysł, dlaczego nie działa mi funkcja DirectoryExists??(używam Delphi 4)...

Co dokładnie nie działa?
--Pawel

Delphi6

0

Mówi mi, że takiej funkcji nie ma, a chyba powinna być... Dzięx LKS, sprawdzę to, bo teraz nie mogę, jakby co, to jeszcze napiszę ;-)

0

A masz SysUtils w uses?--Pawel

Delphi6

0

Mam SysUtils i nadal nie działa, ale to, co napisał LKS działa. Poraz kolejny mnie uratowałeś, wielkie dzięx, LKS ;-)

0

Dover napisał:
Mam SysUtils i nadal nie działa,

Ciekawe, bo DirectoryExists jest wbudowane w Delphi. Ale moze nie w D4. Jesli z jakiegos powodu nie chcialbys uzywac kodu LKS [dygresja: w zasadzie nie ma takiego powodu, bo kod jest krotki i ladny], sprobuj dodac do uses FileCtrl -moze wtedy zadziala.--Pawel

Delphi6

0

Po dopisaniu FileCtrl zaczęło działac, dzięx..

0

hehe :-)
To nie jest moj kod. Napisalem przeciez ze znalazem go w jakims FAQ :-)

--
-=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

1 użytkowników online, w tym zalogowanych: 0, gości: 1