Wątek przeniesiony 2015-10-28 22:09 z Delphi i Pascal przez furious programming.

Tablica rekordów (Array of classes) i błąd 'System.NullReferenceException'

0

Witam wszystkich serdecznie;

// program w C# 
// zdefiniowałem klasę:
        public class TStrRDBF // struktura tablicy opisu struktury bazy DBF
        {
            public string Nazwa { get; set; }
            public char Typ { get; set; }
            public int Rozmiar { get; set; }
            public int Punkt { get; set; }
        }
//  a następnie tablicę
        TStrRDBF[] AStruDBF = new TStrRDBF[2];

//i wszystko jest pięknie, nie ma żadnych błędów kompilacji kodu tylko w linii

      AStruDBF[tmpI].Nazwa = tmpS;

//(tmpI i tmpS są prawidłowo zdefiniowane)
// wyskakuje błąd:  'System.NullReferenceException'
// okazuje się, że to jest wina tablicy
//podgląd zmiennych:		AStruDBF[0].Nazwa	'AStruDBF[0].Nazwa' threw an exception of type 'System.NullReferenceException'	string {System.NullReferenceException}
// żeby nie było tablica istnieje
//podgląd zmiennych:		AStruDBF.LongLength	2	long
// gdzie jest błąd i jak zainicjować tę tablicę by można ją było wypełnić?

Z góry dziękuję za pomoc
Witold

0

A jakie wartości mają tmpI i tmpS?

1

Stwórz obiekt klasy TStrRDBF i przypisz go do konkretnego pola tablicy. Dopiero potem odnoś się do pól tego obiektu w kodzie.

0
michta napisał(a):

A jakie wartości mają tmpI i tmpS?

Integer i String - są to dane sterujące pętli i parametr czytany z pliku.

0
WJJ03 napisał(a):

Przepraszam ale ma być to tablica rekordów a nie rekord w tablicy.

No a jak masz tablicę rekordów, to czym jest pojedynczy element tej tablicy jak nie rekordem?

Jak mogło by to wyglądać?
Jak się do tego odwoływać?

TStrRDBF[] AStruDBF = new TStrRDBF[2];
AStruDBF[0] = new TStrRDBF();
AStruDBF[0].Name = "test";

Ma zastąpić taką strukturę z Delphi - tam jest to bajecznie proste, a w C# co kawałek jakiś problem.

Pewnie dlatego, że znasz Delphi, a nie znasz C#.

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