AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stack - Daten werden nicht richtig ausgegeben

Ein Thema von spox · begonnen am 31. Aug 2008 · letzter Beitrag vom 31. Aug 2008
Antwort Antwort
Benutzerbild von spox
spox

Registriert seit: 23. Sep 2007
47 Beiträge
 
Delphi 7 Personal
 
#1

Stack - Daten werden nicht richtig ausgegeben

  Alt 31. Aug 2008, 19:19
Hallo liebe 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
MfG,
spox
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Stack - Daten werden nicht richtig ausgegeben

  Alt 31. Aug 2008, 19:30
ShowModal wartet, bis das Formular wieder geschlossen wurde. Du musst daher das Memo befüllen, bevor du das Formular anzeigst.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von spox
spox

Registriert seit: 23. Sep 2007
47 Beiträge
 
Delphi 7 Personal
 
#3

Re: Stack - Daten werden nicht richtig ausgegeben

  Alt 31. Aug 2008, 19:35
boar super danke ... funzt nu alles

MfG,
spox
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 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