operacje na plikach ascii memo lub tString

0

jakdo programu wczytc plik ascii najlepiej do memo lub richedit (plik ma ponad 4MB) i wykonywac operacje na nim (wklejac i wycinac fragmenty)

0

TMemo przechowuje maksymalnie 64Kb danych. TRichEdit powinno wczytać bez problemu (tylko z kilkusekundowym opóźnieniem).

0

TRichEdit.Lines.LoadFromFile
TRichEdit.SelStart; TRichEdit.SelLength; TRichEdit.SelText

+F1

0

var
f:textfile;
begin
assignfile(f,'sciezka/nazwa_pliku');
readln(f,zmienna); //czyta linijkę z pliku
writeln(f,zmienna); // zapisuje linijkę do pliku
closefile(f);
end;

0

TMemo przechowuje maksymalnie 64Kb danych. TRichEdit powinno wczytać bez problemu (tylko z kilkusekundowym opóźnieniem).

rich edit wczytuje mi tylko 1 linijke krzaczków nic wiecej.
a co do wklejania to chodzi mi nie o wklejanie na koncu czy na poczatku tylko zastepowianie 1 fragmentu wsrodku pliku drogim o tej samej dlugosci.
no i chodzi niekoniecznie musi to byc plik txt równie dobrze musi to dzialac z kazdym innym typem plików. np. exe

0

rich edit wczytuje mi tylko 1 linijke krzaczków nic wiecej.

Na pewno próbujesz wczytać plik 'binarny'.

a co do wklejania to chodzi mi nie o wklejanie na koncu czy na poczatku tylko zastepowianie 1 fragmentu wsrodku pliku drogim o tej samej dlugosci.

Jak już wspomniałem: SelStart + SelLength + SelText.

no i chodzi niekoniecznie musi to byc plik txt równie dobrze musi to dzialac z kazdym innym typem plików. np. exe

Jeśli to nie będzie plik tekstowy, to zrób zrzut 16-stkowy.

0

a jak ten zrzut 16 zrobic ?? znaczy jak odczytywac te fragmenty pliku do buffora i potem to w calosc jedna polonczyc??

0

a jak ten zrzut 16 zrobic ?? znaczy jak odczytywac te fragmenty pliku do buffora i potem to w calosc jedna polonczyc??

Otwierasz plik (TFileStream.Create...), wyszukujesz w strumieniu potrzebny fragment, ustawiasz na nim pozycję początkową (TFileStream.Position (or Seek)), odczytujesz (w pętli) żądaną liczbę bajtów, zamieniasz bajty na HEXy (IntToHex(Bajt, 2)). Hexy wstawiasz do TRichEdit-a i masz zrzut 16-stkowy fragmentu pliku.

0

a moze jakis kodzik ??

0

w OnClick przycisku wstaw to:

procedure TForm1.Button1Click(Sender: TObject);
var
FOut, FIn: file;
Mem: Pointer;
begin
AssignFile(FOut,Edit1.Text);
AssignFile(FIn,Edit2.Text);
Reset(FOut,FileSize(FIn));
Reset(FIn,FileSize(FIn));
Mem:=AllocMem(FileSize(FIn));
BlockRead(FIn,Mem^,1);
Seek(FOut,StrToInt(Edit3.Text));
BlockWrite(FOut,Mem^,1);
end;

teraz w Edit1 wpisujesz nazwę tego modyfikowanego pliku, w Edit2 nazwę tego który ma być wstawiony do pierwszego, a w Edit3 offset pod którym ma być wstawiony ten drugi plik

dostalem takie cos ale wywala mi błąd I/O 103 wasnie o takie cos mi chodzi.tylko co zrobic zeby to dzialalo ( D5 ent)

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