Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Delphi - otwieranie kilku plików i sortowanie

07 Lut 2005 23:25 1411 2
  • Poziom 13  
    Witam
    Mam 2 problemy w Delphi.
    1) Program ma otwierac automatycznie 16-e plików jeden po drugim z okreslonego katalogu. Ma to byc tak.
    Otwiera pierwszy plik - czyta liczbę jaka w nim jest - zamyka plik.
    Otwiera drugi plik - czyta liczbę jaka w nim jest - zamyka plik.
    I tak przez 16-e plików.

    2) Jak to posortować:
    pióra 20
    gumki 22
    kredki 7
    zeszyty 12
    Aby było tak:
    kredki 7
    zeszyty 12
    pióra 20
    gumki 22

    Dzięki za odpowiedz.
  • Poziom 15  
    Posortować to znaczy, co zrobić?? Można trochę jaśniej??
  • Poziom 16  
    Już dawno nie bawiłem się w Delphi ale jak dobrze pamietam używa sie tam Pascala.

    1. Więc jeśli się nie myle pliki powinno otwierać cię tak jak w Pascalu.
    Code:
    var
    
    pliki:array[1..16] of string;
    i:integer;
    p:text;
    liczba:integer;
    begin

    {tu sie powinno znaleść wypełnienie tablicy ścierzkami dostępu}

    for i:=1 to 16 do
    begin
    assign(p,pliki[i]);
    reset(p);
    read(p,liczba);
    close(p);
    end;
    end.
    {To na pewno zadziała w Pascalu ale nie jestem pewny czy w Delphi tak się otwiera pliki.}



    2. Jeśli to ma być posortowane według liczb na końcach to proponuje taki sposób:
    Code:
    type
    
    lista=record
    liczba:integer;
    do_sortowania:string;
    end;

    var
    i,j,z:integer;
    tablica:array[1..16] of lista;
    begin

    {tu sie powinno znaleść wczytanie do tablicy rekordowej zmiennych tablica.do_sortowania}

    for i:=1 to 16 do
    begin
    z:=1;
    tablica[i].liczba:=0;
    j:=lenght(tablica[i].do_sortowania);
    while tablica[i].do_sortowania[j]<>' ' do
    begin
    tablica[i].liczba:=tablica[i].liczba+z*tablica[i].do_sortowania[j]; {nie pamietam jak sie rzutuje stringa na integer więc sam musisz poprawić tą linijke}
    z:=z*10;
    end;
    end;
    end.


    {Dla zrozumienia dzałania kodu: odczytujesz cyfre liczby, mnożysz ją przez liczbe oznaczającą jej pozycje (jednostka to 1, dziesiątka to 10, setka to 100) i dodajesz to wcześniejszego wyniku. W skrucie to wygląda tak np. 123=3*1+2*10+1*100}

    Teraz wystarczy posortować tablice według tablica.liczba a potem wyświetlić po koleji tablica.do_sortowania a wynik powinienes mieć taki jak podałeś.

    Nie jest to może efektyny kod ale wykonuje to co chcesz żeby wykonał.

    Zamykam. - arnoldziq