ODczytywanie linii

0

W pliku

tmp.dat

mam zapisane 3 adres, jeden pod drugim:

[email protected]
[email protected]
[email protected]

I teraz moje pytanie, jak odczytać je, jeden po drugim, np.: aby najpierw sprawdzało ile jest linii w pliku, potem wczytało pierwszą linię do Edit'a. Po wczytaniu i kliknięciu na Button, wczytywana jest druga linijka, a potem trzecia i tak do końca (oczywiście kolejne linijki są wczytywane po kliknięciu na Button).
Czy macie jakis pomysł ? Wiem, że najpierw trzeba sprawdzić jakos ilośc linii w pliku przez Count -1, a potem je jakoś wczytywać, tylko jak ? :/

Za wszelką pomoc dziękuję z góry...

0

na początku otwierasz plik jako textowy i musisz wczytać wszystkie linie przez readln, zamykasz plik i zapisujesz sobie ilość lini.
otwierasz plik i zostawiasz otwarty.
po kliknięciu na button dajesz

if odczytano < max then readln(pik_textowy, edit1.text);

.

PS. jest tez możliwość, ze na robisz plik typowany i wtedy dzielisz jego rozmiar przez rozmiar jednego rekordu i otrzymujesz liczbę rekordów

0

definiujesz najpierw zmienną globalną :

pozycja : integer;

A potem naciśnięcia klawisza :

procedure TForm1.Button1Click(Sender: TObject);
var
    i : integer;
    F : TextFile;
    Adres : string;
begin
    AssignFile(F, 'd:\plik.txt');
    Reset(F);
    for i := 0 to pozycja do begin
        Readln(F, Adres);
    end;

    if Adres <> '' then begin
        Edit1.Text := Adres;
        Pozycja := Pozycja + 1;
    end
    else begin
        Pozycja := 0;
        Button1Click(nil);
    end;

    CloseFile(F);
end;
0

Dziekuję bardzo, ten kod bardzo mi sie przyda, ale mam jeszcze jedna proźbę, chciałym to zaminić jakos tak, żeby odczytany wpis, po prostu usuwało z pliku.

Tzn.: Jak klikne na button'a to wywołuje mi sie procedura wysyłania meila do osoby, której adres znajduje się w Edit1.Text, tylko, że do ten funkcji dodałem opcję wysyłania do wielu adresów poprzez oddzielenie je znakiem ';'. Wykonałem juz procedure, która będzie tak rozdzielała mi tekst w Edit1, że jak np.: pisze w Edicie: [email protected];[email protected];[email protected] to w pliku tmp.dat bedą one pokolei oddzielone:

[email protected]
[email protected]
[email protected]

No i właśnie ostatnim krokiem tej procedury jest to, że podczas kliknięcia na Button 'Wyślij", najpierw sprawdza, czy w tekscie NIE MA paru nazw (zrobione), potem, jeżeli jest tylko jedna to wysyła do niej (zrobione), ale jak jest pare adresów oddzielone znakiem ';' to zapisuje do pliku tmp.dat (zrobione) i ma wysyłać pokolei tyle razy, ile jest adresów w pliku (niezrobione). I tego właśnie mi brakuje :(

Proszę, pomóżcie...

0

zaladuj plik do TStrings i tam masz wszystko czego potrzebujesz.

troche wiecej pamiaci ptrzeba, ale szybciej jest.

0

Nie chce mi się drugiego kodu pisać, ale ci podpowiem, że możesz odczytać maile do usuwanej pozycji - 1, zapisać je w innym pliku, potem odczytać od usuwanej pozycji + 1 do końca, i dopisać do tego nowo utworzonego pliku, potem kasujesz stary plik i zmieniasz nazwę nowemu na taką jak miał stary.

Proste, nieprawdaż?

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