[DELPHI] problem z programem


(Daniek123) #1

Witam

Piszę prosty edytor tekstów, właściwie to napisałem i mam z nim pewien problem, a mianowicie z zapisywaniem napisanego tekstu do pliku.

Problem polega na tym ze problem tworzy plik bez rozszerzenia. Gdy ustawiam wybór rozszerzenia na wszystkie pliki i wpisuje ręcznie rozszerzenie to działa lecz gdy jest ustawione to tworzy tylko plik.

O to kod źródłowy:

unit Unit1;


interface


uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Menus, StdCtrls, Printers;


type

  TForm1 = class(TForm) MainMenu1: TMainMenu;

    Plik1: TMenuItem;

    Nowy1: TMenuItem;

    zapisz1: TMenuItem;

    zakocz1: TMenuItem;

    oprogramie1: TMenuItem;

    Memo1: TMemo;

    otwrz1: TMenuItem;

    Credits1: TMenuItem;

    OpenDialog: TOpenDialog;

    SaveDialog: TSaveDialog;

    FontDialog: TFontDialog;

    Drukuj1: TMenuItem;

    Edycja1: TMenuItem;

    Czcionka1: TMenuItem;

    Kopiuj1: TMenuItem;

    Wklej1: TMenuItem;

    Wytnij1: TMenuItem;

    procedure Nowy1Click(Sender: TObject);

    procedure Zakocz1Click(Sender: TObject);

    procedure zapisz1Click(Sender: TObject);

    procedure oprogramie1Click(Sender: TObject);

    procedure otwrz1Click(Sender: TObject);

    procedure Credits1Click(Sender: TObject);

    procedure Drukuj1Click(Sender: TObject);

    procedure Kopiuj1Click(Sender: TObject);

    procedure Wytnij1Click(Sender: TObject);

    procedure Wklej1Click(Sender: TObject);

    procedure Czcionka1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;


var

  Form1: TForm1;


implementation


{$R *.dfm}


procedure TForm1.Nowy1Click(Sender: TObject);

begin

Memo1.clear

end;


procedure TForm1.Zakocz1Click(Sender: TObject);

begin

close;

end;


procedure TForm1.zapisz1Click(Sender: TObject);

begin

if SaveDialog.Execute then Memo1.lines.SaveToFile(SaveDialog.FileName);

end;


procedure TForm1.oprogramie1Click(Sender: TObject);

begin

showmessage('Note Edit 1.1')

end;


procedure TForm1.otwrz1Click(Sender: TObject);

begin

if OpenDialog.Execute then Memo1.lines.LoadFromFile(OpenDialog.FileName);

end;


procedure TForm1.Credits1Click(Sender: TObject);

begin

ShowMessage('Autor: DAN - Daniel Górka');

end;


procedure TForm1.Drukuj1Click(Sender: TObject);

var

i:integer;

f:TextFile;

begin

AssignPrn(f);

Rewrite(f);

try

Printer.Canvas.Font.Style:=[fsbold];

Writeln(f);

for i:=0 to Memo1.Lines.Count-1 do

Writeln(f,Memo1.lines[i]);

finally

CloseFile(f);

end;

end;


procedure TForm1.Kopiuj1Click(Sender: TObject);

begin

Memo1.CopyToClipboard;

end;


procedure TForm1.Wytnij1Click(Sender: TObject);

begin

Memo1.CutToClipboard;

end;


procedure TForm1.Wklej1Click(Sender: TObject);

begin

Memo1.PasteFromClipboard;

end;


procedure TForm1.Czcionka1Click(Sender: TObject);

begin

if FontDialog.execute then Memo1.Font:=FontDialog.Font;

end;


end.

a tutaj sama procedura odpowiedzialna za zapis

procedure TForm1.zapisz1Click(Sender: TObject);

begin

if SaveDialog.Execute then Memo1.lines.SaveToFile(SaveDialog.FileName);

end;

Filtry komponentu SaveDialog:

Filter Name | Filter

Plik programu Note Edit (*.nt) |*.nt

Plik tekstowy (*.txt)|*.txt

Wszystkie pliki|*.*

Bardzo proszę o pomoc


(Sitemaster) #2

FileName przechowuje tylko nazwę pliku/plików.

możesz ustawić domyślne rozszerzenie poprzez DefaultExt

Ale:

  1. Filter stosujesz do definicji filtrów rozszerzeń

  2. FilterIndex , zawiera index wybranego filtru, liczony od 1

zatem dzięki filterindex możesz z tablicy wybrać użyte rozszerzenie i dopisać je w lini: if SaveDialog.Execute then Memo1.lines.SaveToFile(SaveDialog.FileName);


(Asterisk) #3

Zapoznaj się proszę z tą stroną i zmień tytuł na

konkretny. Inaczej temat poleci do śmietnika.