Page 1 of 1

Stergere date dintr-un fisier *.ini si/sau *.txt

Posted: 23 Jul 2008, 18:24
by Popa Alin
Salutare,

Daca am un fisier *.ini sau *.txt cum pot sa sterg din el anumite informatii? Sau o anumita linie (toata linia)?

Exista ceva mai la indemana, ca eu am facut o metoda dar total neprofesionala, parerea mea. Adica am citit tot continutul fisierului intrun buffer apoi din buffer sterg informatia care o doresc dupa care rescriu fisierul. Stiu ca radeti cand cititi, dar nu am gasit (sau nu am cautat indeajuns ori unde trebuie) nici o metoda MFC care sa faca asta in locul meu :((

Daca exista ceva mai util va rog da-ti un semn.

Mersic.

P.S. La examen un student ia un bilet - nu stie. Ia altul - iarasi nu stie.
Al treilea - de asemenea...Si asa al patrulea, al cincilea...
Profesorul il opreste si ii da nota "5". Ceilalti studenti se
revolta:
- Pentru ce?
- Cum pentru ce? Dupa cum cauta, inseamna ca stie ceva.....

Re: Stergere date dintr-un fisier *.ini si/sau *.txt

Posted: 23 Jul 2008, 22:22
by Ovidiu Cucu
Popa Alin wrote:Daca am un fisier *.ini sau *.txt cum pot sa sterg din el anumite informatii? Sau o anumita linie (toata linia)?

Exista ceva mai la indemana, ca eu am facut o metoda dar total neprofesionala, parerea mea. Adica am citit tot continutul fisierului intrun buffer apoi din buffer sterg informatia care o doresc dupa care rescriu fisierul. Stiu ca radeti cand cititi, dar nu am gasit (sau nu am cautat indeajuns ori unde trebuie) nici o metoda MFC care sa faca asta in locul meu :((

Daca exista ceva mai util va rog da-ti un semn.
Nu radem.
Daca vrei sa "stergi" ceva dintr-un anume fisier o metoda f.f. profesionala ("parerea mea" ;)), e sa ctesti continutul intr-un buffer, sa-i elimini partea care vrei s-o stergi, apoi sa scrii ce ramane la loc.
Daca ne referim ceva "mai util" in cazul fisierelor .ini.... da, exista.
Fisierele .ini (si functiile corespunzatoare) au fost pastrate pentru compatibilitate cu aplicatiile de pe vremea cand programa bunica aplicatii Win16.
Mai nou, pentru acelasi scop, folosesti mult mai eficient si elegant functii care scriu/citesc/sterg in "registry": vezi functiile API ]RegXXX.]

Re: Stergere date dintr-un fisier *.ini si/sau *.txt

Posted: 24 Jul 2008, 08:56
by Viorel
O linie de date dintr-un fisier INI se şterge cu ajutorul funcţiei WritePrivateProfileString dacă cel de-al treilea parametru este nul. O secţiune întreagă poate fi ştearsă cu ajutorul funcţiei WritePrivateProfileSection. Comentariile nu pot fi şterse uşor.

Re: Stergere date dintr-un fisier *.ini si/sau *.txt

Posted: 24 Jul 2008, 10:00
by Dragos Cojocari
Ovidiu Cucu wrote: Nu radem.
Daca vrei sa "stergi" ceva dintr-un anume fisier o metoda f.f. profesionala ("parerea mea" ;)), e sa ctesti continutul intr-un buffer, sa-i elimini partea care vrei s-o stergi, apoi sa scrii ce ramane la loc.
Intr-adevar nu radem. In mod ciudat in 40+ de ani de IT nu s-a gasit o modalitate de a imbunatati accesul la continutul fisierelor ( cel putin pe platformele pe care am lucrat eu).

Solutia , putin modificata e sa citesti in "bucati" fisierul sursa, "bucati" pe care le scrii imediat in alt fisier, cu exceptia bucatii pe care vrei sa o stergi. In cazul fisierelor ini nu ea sa de relevant deoarece acestea sunt relativ mici dar pe alte tipuri de fisiere e mai sigura abordarea pe bucati..

Re: Stergere date dintr-un fisier *.ini si/sau *.txt

Posted: 25 Jul 2008, 11:24
by Popa Alin
Multumesc fain la toata lumea. Am rezolvat problema.

Re: Stergere date dintr-un fisier *.ini si/sau *.txt

Posted: 26 Jul 2008, 07:29
by Ovidiu Cucu
Dragos Cojocari wrote:In mod ciudat in 40+ de ani de IT nu s-a gasit o modalitate de a imbunatati accesul la continutul fisierelor ( cel putin pe platformele pe care am lucrat eu).
Cel putin, da...
Despre accesul la fisiere am invatat cativa ani buni (cu mai putin de 40 de ani in urma). Acces secvential, secvential indexat, random (direct), etc. super-"inbunatatit", mergandu-se pana la nivel de hardware, despre care s-au scris zeci de carti.
Asta la Cobol, Fortran si Assiris.
Platforma? Batranul Felix C XXX :)