ďťż

Ładny brzuch

Pracuje na ListView'ie. Mam problem z procedurą zapisu do pliku. Po 1 zapisaniu lub po otwarciu i wprowadzeniu zmian zawsze wyświetla mi okno zapisz jako. Jest zmienna NazwaPliku: String. Tu daje procedure zapisu:
procedure TOkno.mnZapiszClick(Sender: TObject); begin ZapiszListe(Lista, NazwaPliku); end; procedure TOkno.ZapiszListe(Lista : TListView; NazwaPliku : String); var idxItem, idxSub, IdxImage: Integer; F: TFileStream; pText: PChar; sText: string; W, ItemCount, SubCount: Word; MySignature: array [0..2] of Char; begin if NazwaPliku='' then mnZapiszJakoClick(Self) else //Initialization with Lista do begin ItemCount := 0; SubCount := 0; //**** MySignature := 'LVF'; //Plik ListView F := TFileStream.Create(NazwaPliku, fmCreate or fmOpenWrite); F.Write(MySignature, SizeOf(MySignature)); if Items.Count = 0 then // Lista jest pusta ItemCount := 0 else ItemCount := Items.Count; F.Write(ItemCount, SizeOf(ItemCount)); if Items.Count > 0 then begin for idxItem := 1 to ItemCount do begin with Items[idxItem - 1] do begin //Zapis subitems count if SubItems.Count = 0 then SubCount := 0 else SubCount := Subitems.Count; F.Write(SubCount, SizeOf(SubCount)); //Zapis ImageIndex IdxImage := ImageIndex; F.Write(IdxImage, SizeOf(IdxImage)); //Zapis Caption sText := Caption; w := Length(sText); pText := StrAlloc(Length(sText) + 1); StrPLCopy(pText, sText, Length(sText)); F.Write(w, SizeOf(w)); F.Write(pText^, w); StrDispose(pText); if SubCount > 0 then begin for idxSub := 0 to SubItems.Count - 1 do begin //Zapis Item's subitems sText := SubItems[idxSub]; w := Length(sText); pText := StrAlloc(Length(sText) + 1); StrPLCopy(pText, sText, Length(sText)); F.Write(w, SizeOf(w)); F.Write(pText^, w); StrDispose(pText); end; end; end; end; end; F.Free; end; end;



A gdzie kod mnZapiszJakoClick ??

Jest. Problem jest taki, że procedura mnZapisz nie czyta zmiennej NazwaPliku. Zawsze u niego pozostaje nazwapliku:=' '. Co z tym zrobić?? :blink: :blink:


Jest.
Gdzie? :huh:

Czy Ty gdziekolwiek zapisujesz coś do zmiennej NazwaPliku? Jeśli tak to gdzie?



Człowieku, co ty robisz? :mellow:
procedure TOkno.mnZapiszClick(Sender: TObject); begin ZapiszListe(Lista, NazwaPliku); end;
Tak robisz: jeżeli nazwa pliku jest pusta, to wywołaj tą ^ procedurę, która wywoła tamtą procedurę, która wywołała tą procedurę. :P Kręcisz się cały czas z pustą nazwą pliku.
Użytkownik krajew4 edytował ten post 20 lipiec 2006, 08:51
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •