[Delphi] String w rekordzie wyłącza program

0

Pisze wtyczke do programu. Mam tablice rekordów:

type
  TBaza = record
    Nick: ShortString;
    Czas: ShortString;
    Tekst: ShortString;
    end;

Wszystko działa ok, ale jak dam:

type
  TBaza = record
    Nick: ShortString;
    Czas: ShortString;
    Tekst: String;
    end;

... program zaraz na starcie sie wyłącza, nawet okno sie nie pokazuje, tylko <ort>po prostu</ort>, bez ort!. Słyszałem że w bibliotekach DLL najlepiej unikać Stringów ale nie mialem nigdy z tym problemów.

0

string ma nieograniczoną długość może dlatego. za mało napisałeś, dlatego może.

0
Dibo84 napisał(a)

Słyszałem że w bibliotekach DLL najlepiej unikać Stringów ale nie mialem nigdy z tym problemów.

LOL, a to wielkie info jak tworzysz nową DLLkę to pewnie tak dla jaj borland tam wsadził [sciana]

0

Nie powinien z tego powodu program nie startować. Ale tak, jak zostało powiedziane, jeśli umieszczasz stringi w rekordzie, który zaczytujesz/zapisujesz do pliku typowanego, MUSISZ podać ich długość, czyli albo:

  zmienna: string[255]; //max możliwa do zadeklarowania długość stringa

albo:

  zmienna: array[1..x] of char;

Gdzie x to jakaś liczba, która określa maksymalną długość i tu już może być więcej niż 255 </delphi>

0

btw - sprawdź rozmiar swojego rekordu - wyniesie 256 + 256 + 4 bajty, a to dlatego że ostatnie pole to tylko wskaźnik.

0

A moze jeszcze kolega napisze co z tymi rekordami robi? Bo od samej definicji typu program sie nie posypie.

0
Wolverine napisał(a)

A moze jeszcze kolega napisze co z tymi rekordami robi? Bo od samej definicji typu program sie nie posypie.

Myślę, że może się wysypać, jeśli ma np. zadeklarowanego stringa(bez rozmiaru w rekordzie), a w onCreate lub w onShow próbuje odczytać plik

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