Skocz do zawartości

[Delphi] Tablica dynamiczna - jak utworzyć i obsłużyć tablicę dynamiczną


swordfish111

Polecane posty

Jak wczytać text z pliku do tabeli .. ale nie wiem ile jest elementów tej tablicy...czy jest możliwe zdefiniowanie tej tablicy jako dynamiczna a dopiero po wczytaniu pliku tekstowego ustalenie jej wielkości

 

np 10000 punktów w kolumnie ale nie wiem ile ich jest przed wczytaniem

 

proszę o podpowiedź

Link do komentarza
Udostępnij na innych stronach

Jeżeli chodzi ci o czytanie pliku to masz tu przykład w Delphi, zasada jest taka, że czytasz plik dopóki nie zczytasz znaku EOF (end of file). Tekst z pliku wczytujesz do tablicy dynamicznej najlepiej do stringów gdzie jeden string to jedna linia.

 

While not EOF(plik) do
begin
readln(plik, tempstring); // tu tempstring do tablicy reprezentującjej twój plik
end;

w tablicach dynamicznych nie da się wczytać czegoś a potem ustalić jej wielkości :)

no nie wiem czy czasem Setlength nie czyści tablicy, nie jestem pewny

"Może wam pomoge, może nie, może pierdolcie w dupę się"-prof. Jarząbek

Link do komentarza
Udostępnij na innych stronach

Lepiej, ale pytał o tablice dynamiczne w Delphi więc otrzymał odpowiedź. A szybciej prościej i będzie

TStringList i funkcja LoadFromFile.

 var StringList: TStringList;
begin
  StringList:= TStringList.Create;               // tworzenie zmiennej
  StringList.LoadFromFile('C:\plik.txt');       // Wczytywanie pliku tekstowego TStringList
  FreeAndNil(StringList);                           // kasowanie klasy na amen
end;

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

  • 4 years later...

Ok, dzięki. Tylko właśnie jak mam dokonać tego przesunięcia?

Na razie prowizorycznie sobie zrobiłem tak, że tworze kolejną tablice(pomocniczą) i do niej dodaje wszystkie elementy tablicy pierwotnej oprócz tego o indeksie który ma zostać usunięty, a na koniec przypisuje tablicę pomocniczą do tablicy pierwotnej.

Co prawda działa, ale zawsze lepiej jak jest krócej... ;)

Dokumentacja paskala to jest jakaś masakra jak dla mnie, za nim coś znajdę to już wolę sobie po swojemu naokoło robić... :P

Link do komentarza
Udostępnij na innych stronach

Jeśli tablica jest dużo-elementowa to możesz od razu podczas dodawania ją sortować,

 

czyli:

1. najpierw wyszukujesz w pętli miejsce gdzie można wstawić,

2. jak już znajdziesz i taka pozycja już jest to wyskakujesz z pętli i nie dodajesz jeśli nie ma potrzeby

3. jeśli trzeba dodać to zwiększasz długość tablicy o jeden i kolejno w pętli przesuwasz elementy w tablicy od końca żeby było mniej przypisań

4. gdzieś na środku zwykle zostaje miejsce gdzie trzeba wkleić "nowe" dane

 

a jak już masz posortowane to możesz zrobić sobie funkcję ZnajdzIndex: Integer; w której najprościej wyszukiwać metodą

dzielenia tablicy na pół, zarówno do wyszukiwania miejsca w które chcesz wstawić nową pozycję jak i do wyszukiwania danych po najważniejszym

najczęściej używanym parametrze - w przypadku rekordu z kilkoma danymi.

 

Chmura tagów:

Przykład jak wczytywać tekst do tablicy dynamicznej.

Kod jak zapisywać tekst z tablicy dynamicznej do pliku.

Jak dodawać pozycję do tablicy dynamicznej w Delphi?

Jak kasować element z tablicy dynamicznej w Delphi?

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...