ďťż

Ładny brzuch

Witam. Chcę napisać aplikację, ale nie wiem jak się do tego zabrać. Jak byście chcieli mi pomóć, to proszę o "wsparcie" pod Delphi 7. (Mam 2005, ale jest bez sensu).

Więc mam zamiar stworzyć aplikację, która by tworzyła tabele z wczytywanego pliku. Komponentem do wyświetlania tabeli ma być TStringGrid. Przypuśćmy. Plik ma się składać z wierszy. Każdy wiersz to jeden wiersz w StringGrid. W wierszu wyrazy (złożone też) są oddzielane przez Tabulatory (chyba $09 - hex), które przez nasz program są odczytywane jako kolumny. Dla przykładu, plik:

name type type2 code alternateGfx
Hand Axe axe hax hax hax

jest przykładem tabeli:
---------------------------------------------------------------
|Name |type |type2 |code |alternateGfx |
---------------------------------------------------------------
|Habd Axe |axe |hax |hax |hax |
---------------------------------------------------------------

Jeżeli by ktoś był zainteresowany, skąd akurat TAKI przykład, to są to pliki TXT z gry Diablo 2.

Więc, proszę o pomoc, w wczytywaniu takiego pliku do StringGrid.



procedure LoadToStringGrid(FileName: String); var  st: TStrings;  i: Integer; begin  st := TStringList.Create;  try    st.LoadFromFile(FileName);    StringGrid1.RowCount := st.Count;    for i := 0 to st.Count - 1 do    begin      StringGrid1.Rows[i].Delimiter := #9;      StringGrid1.Rows[i].DelimitedText := st[i];    end;  finally    st.Free;  end; end;
Pisane na kolanie, więc może nie działać - sprawdź zwłaszcza, czy StringGrid1.Rows[] posiada właściwości Delimiter i DelimitedText :)

Dzięki, kod dziala poprawnie. Zapisywać się też już nauczyłem, ale przeszkadza mi jedna rzecz. Przy wczytywaniu pliku z ową tabelą, string grid nie zmienia ilości kolumn, do ilości kolumn w pliku. Proszę o jakieś kody, co by umożliwiły dopasowanie ilości kolumn...
No i jeszcze parę rzeczy:
1. Jeżeli chcę wstawić wiersz (row), to jaki kod mam wstawić?
2. Jeżeli chcę skopiować (i wkleić) wiersz, to jaki kod mam wstawić?
3. Jeżeli chcę wyszukać w tabeli jakichś słów, to co mam wpisać (w kodzie)?

Acha. Jeszcze jedno. Moja procedura zapisu. Jeżeli ktoś zna lepszą, to proszę pisać:
procedure TMainForm.SaveFile; var st: TStrings; i: integer; begin if savedialog1.execute then begin   st := TStringList.Create;   for i := 0 to StringGrid1.RowCount do st.Add('');   for i := 0 to StringGrid1.RowCount do st[i]:=StringGrid1.Rows[i].DelimitedText;   st.SaveToFile(savedialog1.FileName); end; end;
Użytkownik Seba10 edytował ten post 28 styczeń 2006, 22:11
Co do liczby kolumn, to sobie zliczaj liczbę znaków tabulacji (czy innych, którymi oddzielasz poszczególne kolumny) i ustaw odpowiednio StringGrid1.ColCount :P
1. Zwiększasz RowCount o jeden i ewentualnie przesuwasz w dół zawartość wierszy "spod" wstawianego (jeśli wstawiasz wiersz między istniejące).
2. Skopiuj do schowka StringGrid1.Rows[index].DelimitedText
Clipboard.AsText := StringGrid1.Rows[index].DelimitedText;
wklejanie - wstawiasz wiersz jak w 1), a później dajesz:
StringGrid1.Rows[index].DelimitedText := Clipboard.AsText;
3. Co do wyszukiwania, to przeszukuj w pętli wszystkie komórki (StringGrid1.Cells[i, j]), najprościej funkcją Pos();

Procedura zapisu:
procedure SaveFile(FileName: String); var  st: TStrings;  i: Integer; begin  st := TStringList.Create;  try    for i := 0 to StringGrid1.RowCount - 1 do    begin      StringGrid1.Rows[i].Delimiter := #9;      st.Add(StringGrid1.Rows[i].DelimitedText;    end;    st.SaveToFile(FileName);  finally    st.Free;  end; end;

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •