Usuwanie linii w Delphi

0

Cześć,
Mam plik zredagowany w taki sposób ( Prośba nie pytajcie mnie dlaczego tak a nie inaczej )

1r
1r*tralala

1k
1k* bum bum bum

itd. Około 4 mega tekstu
W jaki sposób usunąć Pierwsze linie z : 1r, 1k, i setki innych, zatem te bez * aby
pozostały tylko:

1r* tralala

1k* bum bum bum
4programmers Ci pomoże, a jak nie, to nikt ...mój boże"

0

Odczytuj z danego pliku kolejne linie. Jeżeli linia jest pusta lub występuje w niej '*' to zapisuj tą linię do nowego pliku.
Na koniec można oryginalny plik usunąć a nowy przemianować nazwą starego.

0

Co za problem? Jeżeli one są dokładnie ułożone tak jak mówisz, to wczytaj cały plik do np. TString albo TStringList, (na biedę do TMemo), zrób pętlę, od 0 do Liczby Linijek podzielonej przez 3 (bo co 3 linijkę chcesz usunąć), a potem z każdym wykonaniem pętli usuwaj linijkę o indekie równym zmiennej sterującej razy 3.

0
Kasiu napisał(a)

W jaki sposób usunąć Pierwsze linie z : 1r, 1k, i setki innych, zatem te bez * aby
pozostały tylko:

1r* tralala

1k* bum bum bum

Rozumiem, że chcesz usunąć wszystkie linie równe 1k i 1r, pozostawiając wszystkie puste i te, które zawierają znak *? Jeśli tak, polecam to, co napisał @pelsta:

  1. otwórz plik do odczytu
  2. otwórz nowy plik do zapisu
  3. powtarzaj
    3.1. odczytaj linię
    3.2. jeżeli zawiera znak * lub linia jest pusta
    3.2.1. zapisz ją do nowego pliku
  4. dopóki natrafisz na koniec pliku
  5. zamknij plik do odczytu
  6. zamknij plik do zapisu
  7. usuń plik do odczytu
  8. (opcjonalnie) zmień nazwę pliku do zapisu

To wszystko; Możesz to zrobić na dwa sposoby sprawdzając, czy:

  1. linia jest pusta lub zawiera znak *
  2. linia jest równa 1k lub 1r

Wszystko zależy od gustu;

TomRiddle napisał(a)

wczytaj cały plik do np. TString albo TStringList, (na biedę do TMemo)

Wczytywanie całego pliku do TStrings czy TStringList jest powolne, a już najgorszym rozwiązaniem jest ładowanie go do TMemo - tak jak napisał niedawno @Misiekd - TMemo nie służy do operacji na tekscie, ale do jego wyświetlania - w pełni się z tym zgadzam; Najszybszym rozwiązaniem jest powyższy sposób zważywszy na to, że plik zajmuje kilka megabajtów; W każdym razie i tak nie ma większego sensu wczytywać całego pliku do pamięci;


Kasiu - napisz sobie algorytm, zrób kopię pliku na wypadek, gdyby algorytm działał niepoprawnie i przetestuj go; Jeśli coś jeszcze nie będzie działać jak należy - podaj kod a My coś doradzimy;

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