Ĺadny brzuch
witam, robię aktualizację mojego programu i napotkałem problem. Otóż
w poprzedniej wersji pewna procedura opierała się na listboxie, a teraz jest on nie potrzebny.
Więc postanowiłem zamienić go na TStingList.
Procedura wyszukiwała pliki w komputerze, a następnie je kasowała
//nizej jest już napełniony listbox for i:=0 to ListBox1.Items.Count do begin ListBox1.ItemIndex:=ListBox1.ItemIndex+1; DeleteFile(ListBox1.Items.Strings[ListBox1.ItemIndex]); end;
Ale teraz nie wiem jak przerobić to na TStringList.
//tak kombinowalem for i:=0 to files.Count do begin DeleteFile(files.Strings[1]); //to odczyta wartość pierwszej lini Files.Delete(1); // to skasuje pierwszą linie, więc pierwszą będzie druga end;
I coś mi ten kodzik nie działa tak jak powinien.
P.S.
ten temat tak nazwałem bo doszedłem do wniosku, że zmiennej nie widać, a ma ona przypominać listbox'a :]
Użytkownik DJ Mentos edytował ten post 11 lipiec 2007, 10:14
while (files.Count > 0) do begin DeleteFile(files[0]); //to odczyta wartość pierwszej lini Files.Delete(0); // to skasuje pierwszą linie, więc pierwszą będzie druga end;
files.Count != 0
Chyba trochę bardziej optymalne ;). Ale powyższe jak najbardziej prawidłowe.
@Down:
1. Tak się zastanawiam z poziomu poleceń procesora, ale nie mogę znaleźć ich listy z rozmiarami, więc już nie wiem czy jne ma taki sam rozmiar co ja :(. Jak w końcu znajdę to napiszę czy dobrze czułem czy nie ;)
2. Ostatnio głównie php i c++ - przyzwyczajenia ;). Offcourse <>
3. Jak już count będzie < 0 to znaczy że czas na restart windowsa ;).
// No i nie znalazłem :(. No nic, wpadnie Cyrkiel to zdementuje jak nieprawda :D.
Użytkownik Ali240 edytował ten post 11 lipiec 2007, 11:29
1. niby w czym bardziej optymalne??
2. jak już to <> a nie !=
3. jeśli Count jakimś cudem byłby < 0 (Twój warunek by przeszedł) to by się wywalił na dostępie do 0 itema
ah...teraz działa dzięki ;]
jeszcze mam pytanie:
Jak powinno wyglądać to:
while (files.Count > 0) do begin try
czy
while (files.Count > 0) do try begin
konkretnie chodzi o to try
Podejrzewam że w drugim przypadku kompilator wywali... Jak nie to znaczy że oba przechodzą, ale IMO raczej to pierwsze powinno się stosować (czytelność kodu).
a co ma ten try robić?
ubezpieczyc procedure na błędy ;]
no dobra ale na jakie - na brak pliku - to lepiej najpierw sprawdzić, czy plik jest i dopiero wtedy go usuwać
ubezpieczyc procedure na błędy ;]
A czy procedura jest większa niż ta co była podana? Bo zdaje się że DeleteFile nie wywołuje wyjątków...
ah jest i to duzo ;]
po drodze jeszcze sprawdzam rozmiar, czy istnieje, czy nie trzeba go przypadkiem zamknąć :>
ah jest i to duzo ;]
po drodze jeszcze sprawdzam rozmiar, czy istnieje, czy nie trzeba go przypadkiem zamknąć :>
No jak jest to co innego ;]. Tylko sprawdź czy funkcje wyrzucają wyjątki - jak nie to nie ma sensu wstawiać try'a ;).
wyzucją na pewno bo mi ciągle debuger sie rzuca ;]
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
w poprzedniej wersji pewna procedura opierała się na listboxie, a teraz jest on nie potrzebny.
Więc postanowiłem zamienić go na TStingList.
Procedura wyszukiwała pliki w komputerze, a następnie je kasowała
//nizej jest już napełniony listbox for i:=0 to ListBox1.Items.Count do begin ListBox1.ItemIndex:=ListBox1.ItemIndex+1; DeleteFile(ListBox1.Items.Strings[ListBox1.ItemIndex]); end;
Ale teraz nie wiem jak przerobić to na TStringList.
//tak kombinowalem for i:=0 to files.Count do begin DeleteFile(files.Strings[1]); //to odczyta wartość pierwszej lini Files.Delete(1); // to skasuje pierwszą linie, więc pierwszą będzie druga end;
I coś mi ten kodzik nie działa tak jak powinien.
P.S.
ten temat tak nazwałem bo doszedłem do wniosku, że zmiennej nie widać, a ma ona przypominać listbox'a :]
Użytkownik DJ Mentos edytował ten post 11 lipiec 2007, 10:14
while (files.Count > 0) do begin DeleteFile(files[0]); //to odczyta wartość pierwszej lini Files.Delete(0); // to skasuje pierwszą linie, więc pierwszą będzie druga end;
files.Count != 0
Chyba trochę bardziej optymalne ;). Ale powyższe jak najbardziej prawidłowe.
@Down:
1. Tak się zastanawiam z poziomu poleceń procesora, ale nie mogę znaleźć ich listy z rozmiarami, więc już nie wiem czy jne ma taki sam rozmiar co ja :(. Jak w końcu znajdę to napiszę czy dobrze czułem czy nie ;)
2. Ostatnio głównie php i c++ - przyzwyczajenia ;). Offcourse <>
3. Jak już count będzie < 0 to znaczy że czas na restart windowsa ;).
// No i nie znalazłem :(. No nic, wpadnie Cyrkiel to zdementuje jak nieprawda :D.
Użytkownik Ali240 edytował ten post 11 lipiec 2007, 11:29
1. niby w czym bardziej optymalne??
2. jak już to <> a nie !=
3. jeśli Count jakimś cudem byłby < 0 (Twój warunek by przeszedł) to by się wywalił na dostępie do 0 itema
ah...teraz działa dzięki ;]
jeszcze mam pytanie:
Jak powinno wyglądać to:
while (files.Count > 0) do begin try
czy
while (files.Count > 0) do try begin
konkretnie chodzi o to try
Podejrzewam że w drugim przypadku kompilator wywali... Jak nie to znaczy że oba przechodzą, ale IMO raczej to pierwsze powinno się stosować (czytelność kodu).
a co ma ten try robić?
ubezpieczyc procedure na błędy ;]
no dobra ale na jakie - na brak pliku - to lepiej najpierw sprawdzić, czy plik jest i dopiero wtedy go usuwać
ubezpieczyc procedure na błędy ;]
A czy procedura jest większa niż ta co była podana? Bo zdaje się że DeleteFile nie wywołuje wyjątków...
ah jest i to duzo ;]
po drodze jeszcze sprawdzam rozmiar, czy istnieje, czy nie trzeba go przypadkiem zamknąć :>
ah jest i to duzo ;]
po drodze jeszcze sprawdzam rozmiar, czy istnieje, czy nie trzeba go przypadkiem zamknąć :>
No jak jest to co innego ;]. Tylko sprawdź czy funkcje wyrzucają wyjątki - jak nie to nie ma sensu wstawiać try'a ;).
wyzucją na pewno bo mi ciągle debuger sie rzuca ;]