Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Stack - Daten werden nicht richtig ausgegeben (https://www.delphipraxis.net/119782-stack-daten-werden-nicht-richtig-ausgegeben.html)

spox 31. Aug 2008 19:19


Stack - Daten werden nicht richtig ausgegeben
 
Hallo liebe DP ! :dp:
Ich arbeite gerade an einen Stack. Ich bastle ein kleines Zettelsystem. Alles klappt soweit ganz gut. Bis auf die Tatsache, dass bei einem Klick auf den Button "alle Notizen anzeigen" erst beim 2. Klick die Notiz(/en) ausgegeben werden. Ich denke der Pointer ist noch an der falschen Stelle. Aber ich kann den Fehler einfach nicht finden.

Da das Programm nicht so groß ist, erlaube ich mir den gesamten Quelltext zu posten:

Delphi-Quellcode:
unit ZettelkastenU;

interface

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

type
  PStapel = ^TZettel;
  TZettel = record
        Inhalt:string;
        next: PStapel;
        end;
  TForm1 = class(TForm)
    Bpop: TButton;
    Bpush: TButton;
    Memo1: TMemo;
    StaticText1: TStaticText;
    B_alleNotizen: TButton;
    procedure FormCreate(Sender: TObject);
    procedure BpushClick(Sender: TObject);
    procedure BpopClick(Sender: TObject);
    procedure B_alleNotizenClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Stapel:PStapel;
  i:integer;
 
implementation

uses NotizfensterU;

{$R *.dfm}

procedure push(var Stapel:PStapel;Neuinhalt:string);
var
  Neuknoten:PStapel;
begin
  New(Neuknoten);
  Neuknoten^.Inhalt := Neuinhalt;
  Neuknoten^.Next := Stapel;
  Stapel := Neuknoten;
end;

procedure pop(var Stapel:PStapel; var AInhalt: string);
var
  Hilf:PStapel;
begin
  Hilf := Stapel;
  Stapel := Stapel^.Next;
  AInhalt := Hilf^.Inhalt;
  dispose(Hilf);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  New(Stapel);
  i:= 1;
end;

procedure TForm1.BpushClick(Sender: TObject);
begin
  push(Stapel,Memo1.Lines.GetText);
  Memo1.Clear;
  Memo1.SetFocus;
  inc(i);
  Form1.Caption:= ('Notizen: ' + IntToStr(i));
end;

procedure TForm1.BpopClick(Sender: TObject);
var
  temp:string;
begin
  if i > 1 then
  begin
   pop(Stapel,temp);
   Memo1.Clear;
   Memo1.Lines.Add (temp);
   i:= i-1;
   Form1.Caption:= ('Notizen: ' + IntToStr(i));
  end;
end;

procedure TForm1.B_alleNotizenClick(Sender: TObject);
var
  cache1,cache2:PStapel;
  c:integer;
begin
//  Form2.Memo1.clear;
  Form2.ShowModal;
  c:= i;
  cache1:=Stapel;
  while c>0 do
  begin
    cache2:= cache1;
    Form2.Memo1.Lines.Add(cache1.Inhalt);
    Form2.Memo1.Lines.Add('---');
    cache1:= cache2.next;
    c:= c-1;
  end;
end;

end.
Ich hoffe ihr könnt mir helfen :)

Apollonius 31. Aug 2008 19:30

Re: Stack - Daten werden nicht richtig ausgegeben
 
ShowModal wartet, bis das Formular wieder geschlossen wurde. Du musst daher das Memo befüllen, bevor du das Formular anzeigst.

spox 31. Aug 2008 19:35

Re: Stack - Daten werden nicht richtig ausgegeben
 
boar super danke ... funzt nu alles :thumb:

:dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz