2 pytania - zliczanie znakow i bufor

0

Trzybobry!

Panowie (panie?) ratujcie!

Juz kiedys temat poruszalem - jak zliczyc liczbe znakow w pliku tekstowym. Plik otwieram poprzez AssignFile, Reset bla, bla - dziala. Ale jak policzyc ile jest tam znakow??!! Odpowiedzi udzielone jakis czas temu mnie nie satysfakcjonuja :(.

Drugie - (moze glupie, ale nie radze sobie) - jak stworzyc bufor o wielkosci otwartego pliku tekstowego, wczytac don plik, obrobic go (pozostawiajac "nowa" wersje tekstu w buforze) i ponownie cos z nim zrobic (chodzi o 1. kodowanie, 2. szyfrowanie tekstu - w tej kolejnosci). Jak sobie poradzic? Bez ukrytych memo itp.

Za wszelkie sugestie bede wdzieczny.

Pozdrawiam!

dopisane

Co do bufora, to mi sie kolacze po glowie tablica, sizeof(), petle - naprowadzcie mnie...

0

Ad.2 :

jesli plik tekstowy (i cr/lf nie podlegaja szyfrowaniu) to TStringList.

moze byc tez tablica (array of byte np) lub TMemoryStream - ale te raczej do plikow nietekstowych, lub gdy chcesz miec kontrole (np szyfrowac) cr/lf

0

Juz kiedys temat poruszalem - jak zliczyc liczbe znakow w pliku tekstowym.

Ale znaków czy znaków takich piśmienniczych?
Bo w sumie Enter w pliku tekstowym to są dwa znaki, jak ci chodzi że z enterami to filesize(plik).
A jak ci chodzi że same literki, cyferki, interpunkcyjne i tak dalej to tak :

var
    plik : File of Byte;
    i : Integer;
    Znak  : Byte;
    LiczbaZnakow : Integer;
begin
    LiczbaZnakow := 0;
    AssignFile(plik, 'nazwa.pliku');
    Reset(plik);
    for i := 1 to FileSize(Plik) do begin
        read(plik, Znak);
        if Znak in [32..126] then LiczbaZnakow := LiczbaZnakow + 1;
    end;
    CloseFile(plik);
    ShowMessage('Liczba znaków : ' + IntToStr(LiczbaZnakow));
end;
0

Odnośnie bufora:

var
Buff: TStringList;
begin
  Buff := TStringList.Create;
  Buff.Clear;
  Buff.LoadFromFile('c:\plik.txt');
  // Dokonanie konwersji na buforze
  Buff.SaveToFile('c:\plik.txt');
  Buff.Free;
end;
0

Trzybobry!

Dzieki Wam bardzo. Rzeczywiscie TStringList to jest to, co bym chcial. Co do *.LoadFromFile - wpadlem na to ciut wczesniej, niz DETOX napisal, ale WIELKIE DZIEKI za chec niesienia pomocy.

Moje cudo dziala (w 70% funkcjonalne), jest to BETA (jesli nie wczesna ALPHA :-D ) i niedlugo... Dam kod do ocenienia przez "mastrow-flamastrow" - czyli spolecznosc 4p.

Pozdrawiam!

0

Jeszcze jedno zliczanie znaków, bo tamto jest mało efektywne i w dodatku dość nieprzejrzyste.

var
    plik : textfile;
    rozmiar : integer;
    linia : string;
begin
    rozmiar := 0;
    AssignFile(plik, 'nazwa.pliku');
    Reset(plik);
    while not eof(plik) do begin
        ReadLn(plik, linia);
        rozmiar := rozmiar + Length(linia);
    end;
    CloseFile(plik);
    ShowMessage(IntToStr(rozmiar));
end;

Prawda, że prościej?

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