plik txt

0

w jaki sposob z wieloliniowego pliku tekstowego np.:

"aaa
bbb
ccc
ddd
eee
fff
ggg"

usunac linie np. "eee"????

0

Najprostszy, ale nie koniecznie najbardziej efektowny pomysł, to załadowanie pliku do powiedzmy memo i usunięcie niechcianej liniki a natępnie zapisanie pliku. :P a w razie potrzeby, memo moze byc niewidoczne

0

tyle ze przy wiekszych plikach troche to potrwa nie??

0

Ciężko będzie wymyślić sposób, który będzie działać szybko nawet przy większych plikach. Co za tem byś proponował? Otworzenie pliku, czytanie go linia po linii i jeśli to nie ta linia, to zapisanie do drugiego pliku, a jak to niechciana linia, to jej pominięcie ? To też potrwa długo.

0

ja jestem dopiero poczatkujacy wiec temu sie pytam kogos doswiadczonego???

a co do tego sposobu z memo to moglbys mi napisac jakis przykladowy kodzik??

0

<font color="green">Najprostszy, ale nie koniecznie najbardziej efektowny pomysł, to załadowanie pliku do powiedzmy memo i usunięcie niechcianej liniki a natępnie zapisanie pliku. a w razie potrzeby, memo moze byc niewidoczne </span>

I ty śmiesz się nazywać programistą? [glowa] [glowa]

Wczytaj zawartość pliku do zmiennej s: string, wyszukaj "eee" przez pos, skasuj "eee" przez Delete, na końcu zapisz zmienną s do pliku.

0

ja sie nie nazywam programista!!!!
ja sie dopiero ucze i tego nie ukrywam!!!

jedynie co umiem na razie to php

0

Ehh przecież nie mówiłem o Tobie

0

no to serdecznie przepraszam cie za moja pomylke

a moglbys mi pomoc??

0

Hmmm... Detox, przepraszam, nie wpadłem na to aż tak szybko jak ty, ale to nie powód, żeby się tak denerwować... Zresztą....

0

Detox, trzeba by jeszcze usunąć CR/LF bo zostanie pusta linia.

Można też tak (korzystając z dobrodziejstw VCL-u)

 with TStringList.Create do
 begin
   LoadFromFile('c:\test.txt');
   Delete(IndexOf('eee'));
   SaveToFile('c:\test.txt');
   Free;
 end;
0

<font color="green">Hmmm... Detox, przepraszam, nie wpadłem na to aż tak szybko jak ty, ale to nie powód, żeby się tak denerwować... Zresztą....</span>

Nie denerwuje się, spoko - po prostu gorączki dostaje jak ktoś używa VCL`a do takich operacji..

0

mógł by też zrobić tak oczywiście nie neguje metody PQ ale ta też jest przystępna adykwatna do poprzedniej możliwości:

begin
Memo.lines.LoadFromFile('C:\Plik.txt');
Memo.lines.text:=StringReplace(Memo.lines.text,'eee','',[rfreplaceall,rfignorecase]);
//StringReplace = Zmiana zwrotu "eee" na "" 
Memo.lines.SaveToFile('C:\Plik.txt');
end;

Ten sam skutek a inna metoda każdemu może się przydać...
Pozdrowienia Ozyrek

0

Ozyrys, a czy to nie to samo co napisał Sasik ? [glowa] [glowa]

0

A ja mam metodę ekstremalną, ale na pewno najszybszą: dołączyć zawartość pliku do obszaru pamięci wirtualnej procesu, potraktować wtedy zawartość pliku jako zmienną, wykonać odpowiednie operacje na tej zmiennej (znalezienie wzorca, np.: "eee", przesunięcie tego, co leży za "eee" o długość wzorca w lewo) i odmapować plik.

I uprzedzam, metoda jest trochę pojechana, ale jeśli się znajdzie jakiś wariat, to zapraszam do lektury opisu funkcji (M$SDK lub win32.hlp):
CreateFileMapping
FlushViewOfFile
MapViewOfFile
MapViewOfFileEx
OpenFileMapping
UnmapViewOfFile

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