ďťż

Ładny brzuch

Witam !

Na wstępie zaznaczam iż jestem początkującym programistą Delphi. Piszę sobie program do katalogowania filmów. Wszystko oparte na listview. Problem pojawia się gdy chcę zapisać do ListView więcej niż 255 znaków. Wszystko niby działa, program się kompiluje, ale przy uruchamianiu wywala błąd. Próbowałem czegoś takiego:

Dane = packed record
Tytul: string[255];
Opis: array[0..999] of string;
end;

lecz kompilator wywala błąd Incompatible types: 'Array' and 'String'.
próbowałem też:

Dane = packed record
Tytul: string[255];
Opis: array[0..999] of char;
end;

z tym samym skutkiem.
Pytanie brzmi czy, i jeśli tak to w jaki sposób zapisać do pliku więcej niż 255 znaków.
Jeśli ktoś wie jak rozwiązać mój problem będę bardzo wdzięczny za podanie rozwiązania. Dodam iż szukałem na forum lecz nie znalazłem konkretnej odpowiedzi.



spróbuj jako nazwę przypisywać :
var s : string; begin s := 'długi_255_znakowy_text'+'oko_jeza';

//----------------------
www.beldzio.com
Szukam betatesterów chętnych proszę o wpisanie się na www.beldzio.com/beta

Możesz też zapisać pełny tekst w Objects każdego itema.

Zapraszam na moją stronkę o programowaniu:http://www.migsoft.prv.pl

Tak też pójdzie: var s:array[0..999]of char; begin listview1.Items.Add.Caption:=s;:D

------------------------
Pzdr, Cyrkiel



Dziękuję wszystkim za zainteresowanie, ale niestety nie udało mi się zrobić tego co chciałem. Pozwolę sobie przytoczyć tutaj fragment kodu programu. Być może ktoś będzie wiedział jak rozwiązać mój problem. Pytanie brzmi: Jak zapisać do ListView (i do pliku) więcej niż 255 znaków, żeby kompilator nie wygenerował błędu i żeby można było swobodnie odczytać i zapisać dane do pliku.

Dane = packed record
Title: string[255]; //tytuł
Typ: String[10]; //typ
Ile: String[10]; //ilość płyt
Gatunek: String[50]; //gatunek
Opis: String[255]; //opis musi mieć więcej niż 255 znaków
end;

const
DatFile: string = 'danedane.dat';

var
Form1 : TForm1;
DATA : Dane;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject); //uruchomienie programu
var
Plik: TFileStream;
i: Integer;
ListItem: TListItem;
begin
if not FileExists(DatFile) then
begin
// jeśli plik z danymi nie istnieje
ShowMessage('Nie znalazłem pliku: ' + DatFile + '. Zakładam nowy.');
end
else
begin
// odczytaj plik
Plik := TFileStream.Create(DatFile, fmOpenRead);
for i := 0 to Plik.Size div SizeOf(Dane) -1 do
begin
ListItem := ListView1.Items.Add;
Plik.Seek(i, SizeOf(Dane));
Plik.Read(Data, SizeOf(Dane));
ListItem.Caption := Data.Title;
ListItem.SubItems.Add(Data.Typ);
ListItem.SubItems.Add(Data.Ile);
ListItem.SubItems.Add(Data.Gatunek);
ListItem.SubItems.Add(Data.Opis);
end;
Plik.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject); //dodaj nowy rekord
begin
with ListView1.Items.Add do
begin
Caption := Edit1.Text; //przypisywanie ListView tekstu z komponentów
SubItems.Add(ComboBox1.Text);
SubItems.Add(SpinEdit1.Text);
SubItems.Add(ComboBox2.Text);
SubItems.Add(Memo1.Text)
end;
AllClear(Sender);
end;

procedure TForm1.AllClear(Sender: TObject); //wyczyść tekst
begin
Edit1.Clear;
ComboBox1.Text := '';
SpinEdit1.Clear;
ComboBox2.Text := '';
Memo1.Clear;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); //zamknięcie programu
var
Plik: TFileStream;
i: Integer;
begin
Plik := TFileStream.Create(DatFile, fmCreate);
for i := 0 to ListView1.Items.Count - 1 do
begin //zapis danych do pliku
Data.Title := (ListView1.Items[i].Caption);
Data.Typ := (ListView1.Items.Item[i].SubItems[0]);
Data.Ile := (ListView1.Items.Item[i].SubItems[1]);
Data.Gatunek := (ListView1.Items.Item[i].SubItems[2]);
Data.Opis := (ListView1.Items.Item[i].SubItems[3]);
Plik.Write(Data, SizeOf(Dane));
end;
Plik.Free;
end;

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