Długość string w rekordzie

Odpowiedz Nowy wątek
2011-05-21 16:03
0

Witam, dzisiaj pojawił się kolejny problem, który oczywiście wymaga rozwiązania, a mianowicie, pisze wypożyczalnie filmów i chciałbym aby każdy film miał swój opis, i tutaj właśnie pojawia się problem, a mianowicie długość stringu w rekordzie może mieć tylko 255, co mnie w żaden sposób nie zaspakaja, ponieważ jest to o wiele za mało. Czy istnieje jakaś przyzwoicie prosta metoda, aby temu zaradzić.

dodam, że szukałem po internecie i nawet tutaj na forum, ale wydaje mi się, że żaden temat nie odpowiada do końca na postawiony problem.

edytowany 1x, ostatnio: madmike, 2011-05-21 16:06
Bądź tak miły i przeczytaj to: Jak tytułować wątki na forum? - madmike 2011-05-21 16:05

Pozostało 580 znaków

2011-05-21 16:29
0

Możesz w strukturze dać pole typu PChar, i przydzielać pamięć dynamiczne, od razu ostrzegam prawie całość będziesz musiał poprzerabiać.
Lub też przewidzieć opis powiedzmy na 20 wierszy, każdy z których może mieć 255 znaków.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2011-05-21 17:33
0

Zawsze możesz zapisywać dane o długości stringów przed ich zapisaniem, a później odczytywać i ustawiać długośc stringa. Przeanalizuj sobie kod dołaczony do tego posta. Ktoś kiedyś wytknąl mi, że jest tragiczny, ale ja tylko rozszerzyłem program i poprawiłem nieco kod Adama Boduha, ale dzięki przykładom oraz przyjrzeniu się jak ustawiam record DaneRec_Dlugosci powinieneś zrozumieć ideę.


Pozostało 580 znaków

2011-05-21 19:27
0

dajesz zamiast string ansistring i już masz nielimitowane znaki. bez żadnych kombinacji.


Nie pisz do mnie PM o czymś co nie dotyczy bezpośrednio mnie. | Nie rozmawiaj ze mną jeśli brak Ci kultury (wystarczy że mi brakuje) | Nie jestem zły, jestem po prostu zły.

Pozostało 580 znaków

2011-05-21 19:40
0

To się zgadza, jednak typowy string w Delphi ma chyba też bardzo dużą pojemność, bo ciężko będzie wypełnić ponad 2 GB znaków, ale to nie zmienia faktu, że zapisująć taki string tak czy inaczej, przy odczycie trzeba znać jego długość aby odczytać to co potrzeba i w takiej ilości znaków jaką potrzeba. Czyli na przykład robimy tak, jak poniżej i wszystko będzie ok...

ZAPIS:

var
  L : integer;
  A : AnsiString;
  MS : TMemoryStream;
begin
  A := 'this is jus a test';
  MS := TMemoryStream.Create;
  L := Length(A);
  MS.Write(L, SizeOf(L));
  MS.Write(A[1], L);
  MS.SaveToFile('D:\test.bin');
  MS.Free;
end;

ODCZYT:

var
  L : integer;
  A : AnsiString;
  MS : TMemoryStream;
begin
  MS := TMemoryStream.Create;
  MS.LoadFromFile('D:\test.bin');
  MS.Read(L, SizeOf(L));
  SetLEngth(A, L);
  MS.Read(A[1], L);
  Edit1.Text := A;
  MS.Free;
end;

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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