Dopisywanie do pliku

Odpowiedz Nowy wątek
Tak to ja
2004-09-07 21:43
Tak to ja
0

Witam,
Jak moge dopisać zawartość zmiennej strong do 3 linijkiw w pliku tekstowym? Z tego co wiem to Append dopisuje na końcu.. i nie wiem jak to przerobić aby cofnąć się do 3 linijki.

Może nie wszytsko jest jasne więc zobrazuje to na przykładzie. Mam plik tekstowy w postaci:

linijka pierwsza
linijka druga
linjka trzecia
linijka czwarta

i chce sie dopisac pomiedzy linjke druga a trzecią czyli chce doprowadzić plik do postaci:

linijka pierwsza
linijka druga
LINIJKA DOPISANA PRZEZ PROGRAM
linijka trzecia
linijka czwarta

Mam nadzieję ze otrzymam odpowiedź. Z gory dzięki.
Pozdrawiam.

Pozostało 580 znaków

nav
2004-09-07 21:44
nav

Rejestracja: 16 lat temu

Ostatnio: 2 lata temu

Lokalizacja: Warszawa

0

seek.


utf-8 rlz! ٩(ಥ_ಥ)۶

Pozostało 580 znaków

Tak to ja
2004-09-07 22:00
Tak to ja
0

mam tak:

var
 filek: TextFile;
begin
  AssignFile(filek, dir);
  Reset(filek);
  seek(filek, 3); // [Error] Unit1.pas(585): Incompatible types
end;

Zaznaczm ze chodzi mi o plik tekstowy! A nie plik typowany(rekordowy)

Pozostało 580 znaków

pit
2004-09-07 22:06
pit
0

zrób to łatwiej:
1.Przpisz plik do TMemo.
2.Instrukcją Memo1.Lines.Insert(2, 'linijka do wpisu'); {2 bo linie w memo są liczone od 0.
3.Przepisz zawartosc TMemo do pliku.

I po problemie :)

Pozostało 580 znaków

2004-09-07 22:13

Rejestracja: 17 lat temu

Ostatnio: 4 lata temu

0

Zostały tu popełnione 2 błędy:

  • seek- nie do plików tekstowych
  • Reset(plik) - tylko do odczytu

A do takiej operacji nie prosto będzie na plikach tekstowych - można chyba to zrobić za pomocą strumienia .. i wtedy wykorzystać Seek, ale to też będzie ciężko.. - albo wykorzystać TStringList (nie Memo!) - chyba najlepiej..


Pozostało 580 znaków

2004-09-09 00:50

Rejestracja: 16 lat temu

Ostatnio: 11 lat temu

0

Go:

var Plik_Stary : TextFile;
      Plik_Nowy : TextFile;
      Linia : byte;
      Wstawiasz : string;
      Temp : string;
      Licznik : byte;

begin  // otwieramy pliczki i jedziemy z koksem
assign(plik_stary,'plik\ktory\chcesz\zmieniac.txt');
assign(plik_nowy,'plik\ktory\bedzie\pol-klonem.txt');
reset(plik_stary);
rewrite(plik_nowy);

repeat // teraz przepisujemy pliczek az do lini po ktorej chcemy cos dodac
readln(plik_stary,temp);
writeln(plik_nowy,temp);
inc(licznik);
until licznik=Linia;

writeln(plik_nowy, wstawiasz); // wstawiamy to co chcielismy dodac

repeat // i przepisujemy pliczek do konca
readln(plik_stary,temp);
writeln(plik_nowy,temp);
until eof(plik_stary);

close(plik_stary);
close(plik_nowy);
end;

W tym sa bledy ale nie mam sily wlaczac teraz delphi czy pascala i poprawiac to. Masz caloksztalt i zrob z tego pozytek. Aha musisz jeszcze na koniec usunac stary plik i zmienic nazwe nowego (posluz sie zmienna do zapisania starej nazwy), ale to juz latwizna, zas wszystko jest w helpie pod bardzo latwymi do znalezienia haslami. Powodzenia. :]


SSP - 0.04 - 4% - i c*uj :)

Pozostało 580 znaków

2004-09-09 22:53

Rejestracja: 15 lat temu

Ostatnio: 11 lat temu

0

Wspominał już o tym DETOX , można wykorzystać TStringList, mogłoby to wyglądć mniej więcej tak

var dane:Tstringlist;
begin
dane:=tstringlist.Create; //przydzial pamięci
dane.LoadFromFile('f:\plik.txt'); //zaladowanie danych
dane.Insert(2,'linijka trzecia'); //wstawienie w 3 linijce tekstu "linijka trzecia"
dane.SaveToFile('f:\plik.txt'); //zapisanie danych
dane.Free; // zwolnienie pamieci
end;

Pozostało 580 znaków

2004-09-10 09:17

Rejestracja: 16 lat temu

Ostatnio: 11 lat temu

0

Metoda z insertem z tego co widze jest swietna :] Ale nie zadziala jesli nasz programista pisze w Pascalu. A tak <ort>wogole</ort> to dzieki. Mi tez sie to przyda.


SSP - 0.04 - 4% - i c*uj :)

Pozostało 580 znaków

Odpowiedz

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