[ Ivan Tanasic @ 08.06.2003. 22:26 ] @
Konkretno me zanima kako da (u delphi-ju) obrizem jedan entry iz sekvencionalne datoteke, dakle file of x gde je x struktura(record)... mogu da protrcim kroz fajl, i u drugi fajl prepisem sve osim zeljenog entrija :P i onda obrisem prvi fajl i promenim ime drugom u prvi i to cu verovatno i uraditi ako ne odbijem odgovor u skorije vreme :) ... al predpostavljam da postoji neka procedura koja to radi pa bi se time ustedelo na vremenu ako je file ogroman...

dakle kako to odraditi a da je neki brzi nacin od gore navedenog...

pozdrav, ivan
[ silverglider @ 09.06.2003. 04:24 ] @
Ako je *sekvencijalna*, dakle tipa "na traci", onda iz sredine ne mozes da brises.

Imas za brisanje funkciju Truncate, koja odseca od tekuceg recorda sve do EOF. To jest, pravi od tekuceg recorda poslednji. To mozes da iskoristis tako sto u svoj record stavis polje Deleted:boolean; pa kada se neko polje brise, ono se brise samo logicki i dalje u programu ne koristi, ne prikazuje, itd. Recordi se sortiraju u datoteci tako da prvo idu oni koji imaju Deleted=false, a na kraju ovi "obrisani". Tako uvek imas search operacije samo do ovih 'zivih'. Uvek imas opciju da "vratis" obrisane recorde iz mrtvih ili na explicitno dugme da ocistis fajl od djubreta -> samo se pozicioniras sa seek na prvi record koji ima deleted==true i okines ovaj Truncate.