w jaki sposob z wieloliniowego pliku tekstowego np.:
"aaa
bbb
ccc
ddd
eee
fff
ggg"
usunac linie np. "eee"????
w jaki sposob z wieloliniowego pliku tekstowego np.:
"aaa
bbb
ccc
ddd
eee
fff
ggg"
usunac linie np. "eee"????
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
tyle ze przy wiekszych plikach troche to potrwa nie??
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.
ja jestem dopiero poczatkujacy wiec temu sie pytam kogos doswiadczonego???
a co do tego sposobu z memo to moglbys mi napisac jakis przykladowy kodzik??
<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.
ja sie nie nazywam programista!!!!
ja sie dopiero ucze i tego nie ukrywam!!!
jedynie co umiem na razie to php
Ehh przecież nie mówiłem o Tobie
no to serdecznie przepraszam cie za moja pomylke
a moglbys mi pomoc??
Hmmm... Detox, przepraszam, nie wpadłem na to aż tak szybko jak ty, ale to nie powód, żeby się tak denerwować... Zresztą....
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;
<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..
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
Ozyrys, a czy to nie to samo co napisał Sasik ? [glowa] [glowa]
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