String Grid Acces Violation Odwołanie z procedury

0

Witam!
Mam formę ze String Gridem (SG):

 
unit UnitL;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DateUtils, Grids;

type
  Takcja = (wcisniecie, puszczenie);
  Tlogi = packed record
    czas_ms : Double;
    wiadomosc : Takcja;
    ktory_klawisz : byte;
    pozycja_myszy : TPoint;
    end;
  TForm1 = class(TForm)
    {...}
    SG: TStringGrid;
    procedure Button1Click(Sender: TObject);    
    procedure FormCreate(Sender: TObject);    
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  WczytywaneLogi : array [1..1000] of TLogi;
  PlikLogi : File of TLogi;
  NazwaPliku : ShortString;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i : Int64;
  ilosc : Int64;
begin
  If not FileExists(Form1.Edit1.Text) then begin ShowMessage('Plik o podanej sciezce dostepu nie istnieje!'); Exit; end;
  NazwaPliku := Form1.Edit1.Text;
  AssignFile(PlikLogi, NazwaPliku);
  try
  Reset(PlikLogi);
  i := 0;
  While not Eof(PlikLogi) do // petli for sizeof -1 kompilator nie chciał zaakceptować
    begin
    Read(PlikLogi, WczytywaneLogi[i]); 
    Ilosc := i;
    Inc(Ilosc, 1);    
    Form1.SG.Cells[0, 0] := 'a'; // wykrzacza się tutaj i w każdym innym odwołaniu do tego elementu
    If Form1.SG.RowCount <= Ilosc then Form1.SG.RowCount := Ilosc+1; // tu również się wykrzacza...
   {itd...}
    end;
  finally
  CloseFile(PlikLogi);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   SG.FixedRows := 1;
   SG.FixedCols := 1;
   SG.ColCount := 6;
   SG.RowCount :=2;
  SG.Cells[0,0] := 'Lp.'; SG.Cells[1,0] := 'Czas'; SG.Cells[2,0] := 'Mysz X'; SG.Cells[3,0] := 'Mysz Y'; SG.Cells[4,0] := 'Akcja'; SG.Cells[5,0] := 'Klawisz';
end;
end.

Jak mam się odwołać do tego elementu z procedury, żeby nie było AV? W FormCreate wszystko śmiga i się realizuje, ale kliknięcie buttona powoduje AV :(

Znalazłem w googlach temat w którym najprawdopodobniej jest o tym samym - http://forum.ru-board.com/topic.cgi?forum=33&topic=7445 ale nie znam rosyjskiego :(

EDIT. Też coś o tym, ale dalej nie działa u mnie http://www.elektroda.pl/rtvforum/topic90865.html
Z góry dziękuję za pomoc

1

Podstawowe pytanie: Sprawdzałeś z debuggerem?

Nie, nie pytaj co to debugger tylko google it and use it.

1

Nie mam co sprawdzać, skoro jedynie metoda odwołania jest błędna... Odwołuję się do string grida stałą wartością, więc co mam sprawdzać?

Nie chodzi o odwołanie stałą wartością (wcale nie jest stała). Ale trochę na wyrost użyłem mojego stwierdzenia z debuggerem, bo chociaż podpisałeś linie z kodem. Mógłbyś podać więcej danych.
A co masz dokładnie sprawdzic debuggerem: Referencję do obiektu, może zwolniłeś go jakimś cudem. poza tym, wydaje mi się że to przypisanie w FormCreate jest niepoprawne, bo wtedy chyba jeszcze komponenty nie są zaincjalizowane (ale może się mylę), to też sprawdź. A jak nie to bym zaczał szukać dokumentacji od tego komponentu, na pewno są jakieś dema.

1 użytkowników online, w tym zalogowanych: 0, gości: 1