Ako spravit nasledujucu vec:
mam textovy subor do ktoreho zapisujem atributy urciteho objektu, subor vyzera zhruba takto:
polozka1
znacka
cena
farba
polozka2
znacka
cena
farba
a takto to ide dalej, na kazdom riadku jeden atribut, potom to zo suboru nacitam do pola, ale neviem ako vymazat a editovat nejaky prvok, tak, ze uzivatel zada cislo prvku a podla toho sa bud vymaze alebo edituje dany prvok, a naspat sa to ulozi do suboru???
dakujem za odpovede
Fórum › Pascal
Subory (vymazanie, edit)
Když chceš něco vymazat ze souboru, tak to prostě při zápisu vynech (zapiš jenom to ostatní).
Z pole nějaký prvek vymažeš tak, že na jeho místo přesuneš následující, na místo toho následující další následující a tak dále až do konce pole.
Moje stránka.
no ten edit uz som vyriesil ale to vymazavanie je zatial zle, sice vymaze zaznam ale nie ten ktory zada uzivatel :
uryvok kodu
write('zadajte cislo zaznamu pre vymazanie : ');
readln(cislo);
for i:=cislo to PocetZaznamov do
pole[i]^:=pole[succ(cislo)]^; { prehadzu sa prvky pola teda aspon dufam }
Assign(f,'subor.txt');
Rewrite(f);
for i:=1 to PocetZaznamov do
begin
Writeln(f,pole[i]^.typ);
atd......
end;
Close(f);
Chybička je v tom cyklu, máš tam index cislo misto i. A jestli v tom poli nejsou ukazatele, tak tam nepiš ty šipky (^). Příkaz v cyklu tedy uprav na tohle: pole[i]:=pole[i+1]; (nebo s tím succem, to je jedno).
Potom si dej pozor na meze pole a cyklu. For točíš od Cisla do Poctuzaznamu a čteš záznamy z indexu i+1. Jestli je pocetzaznamu rovný horní mezi pole, načteš v posledním kroku jeden záznam za koncem pole. Pokud máš vypnutou kontrolu rozsahu, celkem nic se neděje (jenom budeš mít na jedné nepotřebné pozici nesmyslná data). Pokud je zapnutá, program umře na Range check error. Takže cyklus dělej jenom do Pocetzaznamu-1. (kdyby se mazal poslední prvek, bude dolní mez cyklu větší než horní, takže žádné přesouvání neproběhne, což je správně)
Další důležitá věc: vymazal jsi jeden záznam, tak po skončení cyklu musíš proměnnou Pocetzaznamu snížit o 1!
Cyklus pro zápis do souboru je v pořádku, jenom zase je tam asi zbytečná šipka.
Moje stránka.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Vymazanie adresára — založil gaben
Vymazanie objektu — založil Patrik
Nefunkčné vymazanie cookies. — založil gold604
Vymazanie neakého riadku . — založil zonda
Vymazanie vstupného riadku — založil ArcaneBeam13
Moderátoři diskuze