Ajde da ti ja malo pomognem.
Promeni sledecu proceduru ovako:
Code:
procedure TfrmAddChangeDvd.btnOKClick(Sender: TObject);
begin
crDvd.sTitle := edtTitel.Text;
crDvd.iReleaseYear := StrToInt(edtJaar.Text);
crDvd.sActor := edtHoofdrolspeler.Text;
crDvd.iRunTime := StrToInt(edtSpeelduur.Text);
crDvd.iZone := StrToInt(edtZoneNummer.Text);
crDvd.sDescription := mmOmschrijving.Text;
if toevoegen then
begin
untDvdData.AddDvds(crDvd);
ClearFields;
Close
end
else
begin
untDvdData.DeleteCurrentDvd;
untDvdData.AddDvds(crDvd);
ClearFields;
Close
end;
end;
Zatim imas gresku prilikom ispisa forme. Iz datoteke ti se ucitavaju 3 sloga a ti ispisujes samo 2. Ta 3 sloga su bila a b b a ti si videla samo a b. Kada si dodala novi elemenat ispisao se i onaj drugi b sto nisi videla da uopste postoji.
Problem u toj proceduri je bio u tome da je while petlja izlazila iz ispisa, kada je dosla do zadnjeg elementa a njega nije ispisala. Promeni proceduru ovako:
Code:
procedure TfrmDVDMngr.ShowForm(Sender :TObject);
var
sDvdInfo : String;
iCurrent: Integer;
begin
iCurrent := lstbxDVD.ItemIndex;
lstbxDVD.Clear;
untDvdData.MoveFirst;
while not untDvdData.EndOfList
do begin
untDvdData.GetCurrentDvd(crDvd);
sDvdInfo := 'Titel:' + ' ' + crDvd.sTitle + ' ' +
'Jaar van uitgave:' + ' ' + IntToStr(crDvd.iReleaseYear) + ' ' +
'Hoofdrolspeler:' + ' ' + crDvd.sActor + ' ' +
'Speelduur:' + ' ' + IntToStr(crDvd.iRunTime) + ' ' +
'ZoneNummer:' + ' ' + IntToStr(crDvd.iZone);
lstbxDVD.Items.Add(sDvdInfo);
untDvdData.MoveNext
end;
if untDvdData.NrOfDvds > 0 then
begin
untDvdData.GetCurrentDvd(crDvd);
sDvdInfo := 'Titel:' + ' ' + crDvd.sTitle + ' ' +
'Jaar van uitgave:' + ' ' + IntToStr(crDvd.iReleaseYear) + ' ' +
'Hoofdrolspeler:' + ' ' + crDvd.sActor + ' ' +
'Speelduur:' + ' ' + IntToStr(crDvd.iRunTime) + ' ' +
'ZoneNummer:' + ' ' + IntToStr(crDvd.iZone);
lstbxDVD.Items.Add(sDvdInfo);
end;
untDvdData.MoveTo(iCurrent);
end;
Ne znam zasto si radila sa cirkularnom dvostruko povezanom listom.
Dosta ti je samo First i First^.Next. Znaci jednostruka lista koja se zavrsava kada je Current = nil
Ja bih to sve uradio od pocetka. Nesto mi smrdi da tu ima jos gresaka.
E, da kada dodas novi element, mora da osvezis listu, da bi se on prikazao.
Nadam se da sam ti malo pomogao. :)
Pozdrav.