Wątek przeniesiony 2015-01-04 22:21 z Delphi i Pascal przez furious programming.

Załadowanie zawartości pliku tekstowego do komponentu Memo

0

Witam, mam problem z odczytem z pliku txt do memo.
Problem polega na tym, że po pierwszym teście programu w memo nie wyświetla się nic, po drugim teście wyświetla się to co zapisałem w poprzednim itd.

Oto mój kod:

procedure TForm3.FormCreate(Sender: TObject);
var
nazwapliku: string;
TF: textfile;
begin
nazwapliku:= 'C:\plik.txt';
Memo1.Lines.LoadFromFile(nazwapliku);
end;

dodanie znacznika <code class="delphi"> - @furious programming

0

A czego oczekiwałeś?
Przecież wczytujesz tylko przy starcie.

0

Wcześniej mam form w którym jest podawanie kilku danych, zapis do pliku i potem jest to.
Chciałbym żeby po zapisie odczytało mi to w memo, jakieś wskazówki?

0

Po zapisie - odczytać.

0

Nie musisz mnie traktować jak debila serio. Potrzebuje tylko pomocy z czymś z czym sobie poradzić nie umiem. Jeśli ktoś umie i CHCE pomóc to poproszę o pomoc. Z góry dziękuję.

Kod zapisu

procedure TForm2.Button1Click(Sender: TObject);
var
  TF : TextFile;
  pusty: string;

begin
max:=strtoint(label3.Caption);
pusty:= ' ';
if licznik<max
then
    begin

      AssignFile(TF, 'C:\plik.txt');
        try
          Append(TF);
          Write(TF, inttostr(licznik));
          Write(TF, pusty);
          Write(TF, form2.edit3.text);
          Write(TF, pusty);
          Write(TF, form2.edit1.text);
          Write(TF, pusty);
          Writeln(TF, form2.edit2.text);
        finally
          CloseFile(TF);

      licznik:=licznik+1;
      form2.Label1.Caption:=inttostr(licznik)+'/'+form1.Edit1.Text;

    end;

      edit1.Text:='';
      edit2.Text:='';
      edit3.Text:='';
end
else
    begin
          AssignFile(TF, 'C:\plik.txt');
        try
          Append(TF);
          Write(TF, inttostr(licznik));
          Write(TF, pusty);
          Write(TF, form2.edit3.text);
          Write(TF, pusty);
          Write(TF, form2.edit1.text);
          Write(TF, pusty);
          Writeln(TF, form2.edit2.text);
        finally
          CloseFile(TF);
    form2.Hide;
    form3.Show;
    end;

  end;
  end;

dodanie znacznika <code class="delphi"> - @furious programming

0
  1. Albo zamiast: form3.Show; dajesz: TForm3.Create(Application).Show; oraz
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=caFree;
end;

oczywiście musi być podpięte pod OnClose
2. Albo przenieś wczytywanie pliku do:

procedure TForm3.FormShow(Sender: TObject);
begin
  Memo1.Lines.LoadFromFile('C:\plik.txt');
end;

Jak widać dokładnie to co powiedziałem wyżej: - "Po zapisie - odczytać."

0

Ta druga opcja ma byc tam gdzie mam memo wrzucone tak? czyli cos takiego:

unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm3 = class(TForm)
    Memo1: TMemo;
    procedure FormShow(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}


procedure TForm3.FormShow(Sender: TObject);
begin
Memo1.Lines.LoadFromFile('C:\plik.txt');
end;


end.

Pytam, ponieważ tak mam i teraz w memo nic nie wyświetla

0

Czy zdarzenie OnShow podłączyłeś do FormShow ?

0

Myślałem, że w tym wypadku jest niepotrzebne. Serdecznie dziękuję za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1