Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
kan den selvfølgelig indeholde 'Skib.txt' eller alle mulige andre strenge, og også navne på allerede slettede filer eller måske noget helt tredie. Altså - prop dit filnavn ind i FilNavnVar og udfør sætningerne som vist.
Hvis man forsøger at slette en fil der ikke findes, gives en IOFejl. IOFejl kan reagere på enten med Try Except End som vist ovenfor eller ved sætte copiler directiver omkring: {$i-} erase(f); {$i+} // og så spørge på funktionen IOResult: if IOResult<>0 then messagebox... // filen kunne ikke slettes
Synes godt om
Slettet bruger
22. marts 2007 - 20:25#8
nor
det virker fint
var f:file; begin assignfile(f,'skib.txt'); try erase(f) except messagebox(0,tFileRec(f).name,pchar('Ukendt fil !'),IdOK); end; end;
nu er jeg ikke interesseret i at sætte f til en fast streng værdi men en variabel værdi af alle de navne der er i listbox.
Det hjælper ikke at sætte skib.txt i f , når der kan være andre tekstfiler i listbox som alb.txt, app.txt, ve.txt - osv
de tekstfiler skal man kunne slette enkeltvis f.eks ved dbclick
Så udskift 'skib.txt' med ListBox1.Items[ListBox1.ItemIndex], således:
var f:file; begin assignfile(f,ListBox1.Items[ListBox1.ItemIndex]); try erase(f) except messagebox(0,tFileRec(f).name,pchar('Ukendt fil !'),IdOK); end; end;
ELLER:
var f:file; FilVarNavn: string[80]; begin FilVarNavn := ListBox1.Items[ListBox1.ItemIndex]; // her kunne du jo så justere på FilVarNavn, f.eks sætte "path'et" foran assignfile(f,FilVarNavn); ($i-} erase(f) ($i+} if IOReslt<>0 then messagebox(0,tFileRec(f).name,pchar('Ukendt fil !'),IdOK); end;
Synes godt om
Slettet bruger
23. marts 2007 - 13:59#10
jeg puslet lidt med din kommentar a_NOR
var f:file; i:integer; begin for i := 0 to listbox1.Items.Count - 1 do assignfile(f,ListBox1.Items[ListBox1.ItemIndex]); listbox1.Clear; try erase(f) except messagebox(0,tFileRec(f).name,pchar('Ukendt fil !'),IdOK); end; end;
Hvis du har flere linier i listboxen er det kun den sidste linie hørende fil der slettes.
Hvis du vil have alle filer slettet skal der lige byttes en anelse rundt: var f:file; i:integer; begin for i := 0 to listbox1.Items.Count - 1 do begin assignfile(f,ListBox1.Items[ListBox1.ItemIndex]); try erase(f) except messagebox(0,tFileRec(f).name,pchar('Ukendt fil !'),IdOK); end; end; listbox1.Clear; end;
Du skal iøvrigt være varsom med at slette linier fra toppen og ned ved anvendelse af Itemindex. Når du har slettet første linie rykker de efterfølgende jo een op og i-et tælles fortsat op. Så er det bedre at bruger For i:= Count-1 downto 0 do
Nu løb du ikke ind i problemet fordi du slettede ALLE linier: Listbox1.clear.
Synes godt om
Slettet bruger
24. marts 2007 - 01:21#13
ok takker a_nor.....
Lige et sidste problem med listbox
click på tomt område i listbox giver en "listindex out of bounds(-1)"
Hvis du klikker på tomt område har du ikke valgt nogen items, og index sættes så til -1, som det også er anført i din fejlmeddelelse. Indexet går fra 0 til count-1. Det er derfor en god ide, de steder man bruger itemindex, at teste for om dette er indenfor grænserne.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.