logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zapisać i odczytać plik z nazwą i danymi z pól Edit w Delphi?

PW031 28 Paź 2006 18:07 1280 11
REKLAMA
  • #1 3162369
    PW031
    Poziom 11  
    Posty: 62
    problem jest taki ....

    jak zrobic .. by zapisac plik o nazwie podanej przez uzytkownika w "edit" tzn chodzim i oto ze wpisuje mu nazwe pod jaka che miec plik klikam przycisk i on mi zapisuje plik pod taka nazwa jaka mu podalem w "edit"

    to jedno a drugie

    mam trzy pola edit .. co zrobic by w pliku zapisac te trzy wartosci z edit1 edit2 i edit3.

    a trzecie to ...

    co zrobic by pozniej odczytac te wartosci z pliku do trzech pol edit.

    z gory dzieki
  • REKLAMA
  • #2 3162399
    Łuk_F
    Poziom 17  
    Posty: 257
    Pomógł: 34
    Ocena: 12
    Witam
    Poniższą procedure wystarczy wywołać w zdarzenu OnClick komponentu Button.
    
    procedure zapis;
    var
    p:text;
    begin
    assign(p,form1.edit1.text);
    rewrite(p);
    writeln(p,form1.edit1.text);
    writeln(p,form1.edit2.text);
    writeln(p,form1.edit3.text);
    reset(p);
    form1.edit1.text:=readln(p);
    form1.edit2.text:=readln(p);
    form1.edit3.text:=readln(p);
    close(p);
    end;
  • REKLAMA
  • #3 3162677
    PW031
    Poziom 11  
    Posty: 62
    ok dzieki .. a teraz wyniklo cos takiego ze wpisuje mu nazwe pliku w edit i cche zeby ni ten plik odczytal i wpisac w edit1 ... itp ..
  • #4 3162793
    Łuk_F
    Poziom 17  
    Posty: 257
    Pomógł: 34
    Ocena: 12
    Nie bardzo rozumiem gdzie ma wczytywac ten plik.
  • REKLAMA
  • #5 3163104
    PW031
    Poziom 11  
    Posty: 62
    dokladnie to chodzi mi teraz o to zeby przy zapisywaniu pliku podawac mu tylko nazwepliku a roszerzenie txt zeby on obie sam dopisal
  • #7 3170211
    PW031
    Poziom 11  
    Posty: 62
    teraz wyinkl problem taki .. do dzialania calego programu brakuje mi jednego .. tego zeby odczytal i wpisal mi wp ola wartosci


    chodzi o to ze podaje mu nazwe pliku .. a on go odczytal .. w nim sa trzy wartosci w innych liniach (ma je wpisac w programie w trzy osobne pola).. dzieje sie to w osobnym oknie

    procedure Tdzienne.Button1Click(Sender: TObject);
    begin
    AssignFile(TF,Edit4.text+'.txt');
    writeln(TF,edit1.text);
    writeln(TF,edit2.text);
    writeln(TF,edit3.text);
    end;


    i to nie dziala :(
  • REKLAMA
  • #8 3171655
    Łuk_F
    Poziom 17  
    Posty: 257
    Pomógł: 34
    Ocena: 12
    Trzeba zadeklarować TF

    procedure Tdzienne.Button1Click(Sender: TObject); 
    var
    TF:text;
    begin 
    AssignFile(TF,Edit4.text+'.txt'); 
    writeln(TF,edit1.text); 
    writeln(TF,edit2.text); 
    writeln(TF,edit3.text); 
    end;
  • #9 3172938
    PW031
    Poziom 11  
    Posty: 62
    zdefiniowane bylo juz wczesniej ... :(
  • #10 3173416
    Fyszo
    Poziom 37  
    Posty: 3987
    Pomógł: 223
    Ocena: 115
    Dodaj jeszcze otwarcie pliku!!! (reset,resetfile)
  • #11 3174397
    PW031
    Poziom 11  
    Posty: 62
    jak chodzi o to :


    procedure Tdzienne.Button1Click(Sender: TObject);
    begin
    AssignFile(TF,dzienne.Edit4.text+'.txt');
    reset(TF);
    writeln(TF,dzienne.edit1.text);
    writeln(TF,dzienne.edit2.text);
    writeln(TF,dzienne.edit3.text);

    end;


    to nie pomaga



    jednym slowem mam cos takiego

    unit Unit2;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons;
    
    type
      Tdzienne = class(TForm)
        Edit4: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Button1: TButton;
        BitBtn1: TBitBtn;
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      dzienne: Tdzienne;
      TF: TextFile;
      S: string   ;
    implementation
    
    uses Unit1;
    
    {$R *.dfm}
    
    procedure Tdzienne.Button1Click(Sender: TObject);
    begin
      AssignFile(TF, edit4.Text+'.txt');
      try
        Reset(TF);
        Read(TF, S);
        edit1.Text := S;
      finally
        CloseFile(TF);
    end;
    begin
    try
        Reset(TF);
        Readln(TF, Q);
        edit2.Text := Q;
      finally
        CloseFile(TF);
    end;
    begin
    try
        Reset(TF);
        Readln(TF, Q);
        edit3.Text := Q;
      finally
        CloseFile(TF);
    end;
    end;
    end;
    end;
    
    
    
    end.
    
     


    i chodzi mi o to zeby pobieral mi z pliku trzy wartosci i kazda z nich wpisal i w inne pole edit to wszystko .. bo jak narazie to wpisuje jedna linie w pliku (a sa trzy) w jedno pole edit
  • #12 3176182
    Łuk_F
    Poziom 17  
    Posty: 257
    Pomógł: 34
    Ocena: 12
    Witam

    Usuń dwa ostatnie resety bo przez nie wracasz na poszątek pliku

    unit Unit2; 
    
    interface 
    
    uses 
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
      Dialogs, StdCtrls, Buttons; 
    
    type 
      Tdzienne = class(TForm) 
        Edit4: TEdit; 
        Label1: TLabel; 
        Label2: TLabel; 
        Label3: TLabel; 
        Label4: TLabel; 
        Button1: TButton; 
        BitBtn1: TBitBtn; 
        Edit1: TEdit; 
        Edit2: TEdit; 
        Edit3: TEdit; 
        procedure Button1Click(Sender: TObject); 
      private 
        { Private declarations } 
      public 
        { Public declarations } 
      end; 
    
    var 
      dzienne: Tdzienne; 
      TF: TextFile; 
      S: string   ; 
    implementation 
    
    uses Unit1; 
    
    {$R *.dfm} 
    
    procedure Tdzienne.Button1Click(Sender: TObject); 
    begin 
      AssignFile(TF, edit4.Text+'.txt'); 
      try 
        Reset(TF); 
        Read(TF, S); 
        edit1.Text := S; 
      finally 
        CloseFile(TF); 
    end; 
    begin 
    try 
        Readln(TF, Q); 
        edit2.Text := Q; 
      finally 
        CloseFile(TF); 
    end; 
    begin 
    try 
        Readln(TF, Q); 
        edit3.Text := Q; 
      finally 
        CloseFile(TF); 
    end; 
    end; 
    end; 
    end; 
    
    
    
    end.

Podsumowanie tematu

✨ Dyskusja dotyczy zapisu i odczytu pliku tekstowego w Delphi, gdzie nazwa pliku jest podawana przez użytkownika w polu Edit. Poruszono kwestie zapisu trzech wartości z pól Edit1, Edit2 i Edit3 do pliku o nazwie podanej w Edit1 z automatycznym dopisaniem rozszerzenia ".txt". Przedstawiono przykładową procedurę wykorzystującą AssignFile, Rewrite, WriteLn do zapisu oraz Reset i ReadLn do odczytu danych. Zwrócono uwagę na konieczność deklaracji zmiennej typu TextFile oraz poprawne otwarcie pliku przed zapisem i odczytem. Omówiono błędy związane z brakiem otwarcia pliku (Reset) przed zapisem i nieprawidłowym użyciem funkcji do odczytu. Zaproponowano poprawki w kodzie, w tym usunięcie nadmiarowych wywołań Reset, które powodowały cofanie się wskaźnika pliku. Przykładowy kod pokazuje, jak zapisać trzy linie tekstu do pliku i jak je później odczytać do trzech pól Edit w osobnym oknie formularza.
Wygenerowane przez model językowy.
REKLAMA