AGB  ·  Datenschutz  ·  Impressum  







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

Programm reagiert nicht mehr nach Buttonclick

Ein Thema von richie · begonnen am 7. Mai 2006 · letzter Beitrag vom 8. Mai 2006
Antwort Antwort
Benutzerbild von richie
richie

Registriert seit: 21. Apr 2006
Ort: Dresden
127 Beiträge
 
#1

Programm reagiert nicht mehr nach Buttonclick

  Alt 7. Mai 2006, 22:28
Tach,
ich war mir nicht sicher, also poste ich mein Problem hier:

Ich will eine Art Chat programmieren, und da hab ich mit der Textausgabe angefangen. Die Buchstaben sollen nacheinander hingeschrieben (ins Memo) werden. Das löse ich ohne einen Timer, weil ich das dann als procedure machen wollte:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  partmesstr: string[1];
  messtr: string;
begin
  messtr := Edit1.Text;
  repeat
    partmesstr := Copy(messtr, 1, 1);
    Memo1.Lines.Text := Memo1.Lines.Text + partmesstr;
    Delete(messtr, 1, 1);
    Application.ProcessMessages;
    Sleep(50);
  until Length(Edit1.Text) = 0;
end;
(Das ist jetzt zu Testzwecken ein Buttonklick.)

Wenn ich auf den Button drück', dann wird der Text auch schön hingeschrieben, allerdings reagiert das Programm danach nicht mehr auf Eingaben (das heißt, ich kann noch Text eingeben und weiter ausgeben lassen, aber Schließen funktioniert nicht mehr ... )?!
Weiß jemand woran das liegt, oder bin ich zu blind den Fehler zu entdecken?

Für Hilfe wär ich sehr dankbar.

/Edit: Weiß nicht genau, welcher Titel aussagekräftig ist.
Robert
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Code funzt nicht, kann Fehler nicht entdecken

  Alt 7. Mai 2006, 22:29
Bitte gib dem Thema einen aussagekräftigen Titel!
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: Code funzt nicht, kann Fehler nicht entdecken

  Alt 7. Mai 2006, 22:32
until Length(Edit1.Text) = 0; Das wird nie eintreten. Eher tritt nochLength(messtr) = 0; ein
  Mit Zitat antworten Zitat
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Programm reagiert nicht mehr nach Buttonclick

  Alt 7. Mai 2006, 22:33
Sollte das nicht until Length(messtr) = 0; heissen?

edit: Roter Kasten?
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Code funzt nicht, kann Fehler nicht entdecken

  Alt 7. Mai 2006, 22:34
Hai richie,

als erstes muss ich dir sagen das der Titel deiner Frage nicht auf Dein Problem schliessen lässt.
Darum bitte ich dich diesen zu ändern.

Aber jetzt zu deiner Frage:
Schaue dir doch mal die Bedingung deiner Repeat-Until Schleife an. Du prüft auf Edit1.Text änderst in der Schleife aber, so wie es auch richtig ist, die Variable messtr..

Da schreibe ich soooo lange und höflich... und was passiert? Drei andere sind schneller als ich
Stephan B.
  Mit Zitat antworten Zitat
Benutzerbild von richie
richie

Registriert seit: 21. Apr 2006
Ort: Dresden
127 Beiträge
 
#6

Re: Programm reagiert nicht mehr nach Buttonclick

  Alt 7. Mai 2006, 22:35
Oh, danke, das ging ja schnell!


P.S.: Man ist das peinlich.
Robert
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#7

Re: Programm reagiert nicht mehr nach Buttonclick

  Alt 7. Mai 2006, 23:52
warum so umständlich? ich finde ne for-schleife wär hier viel angebrachter!
(dann wär dir der o.g. fehler auch nich passiert *g*)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  messtr: string;
  i: integer;
begin
  messtr := Edit1.Text;
  for i:=1 to length(messtr) do
  begin
    Memo1.Lines.Text := Memo1.Lines.Text + messtr[i];
    Application.ProcessMessages;
    Sleep(50);
  end;
end;
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Programm reagiert nicht mehr nach Buttonclick

  Alt 8. Mai 2006, 07:47
und noch einen

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Byte;
  // messstring variable gespart
begin
  for i:=1 to length(edit1.Text) do
    begin
      memo1.Lines.Text:=memo1.Lines.Text+edit1.Text[i];
      delay(50); // delay anstelle von sleep und processMessages
   end;
end;

delay -> http://www.delphipraxis.net/internal...ect.php?t=7355

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#9

Re: Programm reagiert nicht mehr nach Buttonclick

  Alt 8. Mai 2006, 15:27
Zitat von Klaus01:
Delphi-Quellcode:
var
  i: Byte;
  // messstring variable gespart
ja, auf kosten der geschwindigkeit. jedesma auf edit1.text zuzugreifen
is wesentlich langsamer als auf n string zuzugreifen. daher is
es schon besser den text einma auszulesen und dann auf die var zuzugreifen.
is in diesem zusammenhang zwar eigentlich egal, aber wenn man schon
hier anfängt mit delay() statt sleep() etc...
  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:17 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