AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Prism Ereignis bei Timer.Tick funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Ereignis bei Timer.Tick funktioniert nicht

Ein Thema von blade236 · begonnen am 15. Feb 2008 · letzter Beitrag vom 15. Feb 2008
 
Custom

Registriert seit: 18. Aug 2007
Ort: Mainz
203 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Ereignis bei Timer.Tick funktioniert nicht

  Alt 15. Feb 2008, 19:41
Zitat von blade236:
Danke klappt, wieso Global kapier ich aber trotzdem nich.
dann werfen wir dochmal einen blick auf den codeschnipsel

Delphi-Quellcode:
unit WinForm;

interface

uses
  System.Drawing, System.Collections, System.ComponentModel,
  System.Windows.Forms, System.Data, sysutils;

procedure TWinForm.Timer1_Tick(sender: System.Object; e: System.EventArgs);
var zahl:integer;
begin
zahl:=zahl+1;
label1.Text:=inttostr(zahl);

end;

procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);

begin
     timer1.enabled:=true;

end;

end.
in diesem code wird die Variable nach dem Timer1_Tick event definiert.
Delphi-Quellcode:
procedure TWinForm.Timer1_Tick(sender: System.Object; e: System.EventArgs);
var zahl:integer;
Die Variable, die ja nur temporär existiert hat also zuerst mal den wert 0.
Dann wird Zu dem wert 0 der wert 1 dazu addiert.
zahl:=zahl+1; dann wird der wert 1 in dein panel geschirebenlabel1.Text:=inttostr(zahl); und an dieser stelle endet die prozedur und die temporäre variable ist nichtmehr vorhanden.

Sobald dann der nächste "Tick" erfolgt wird die prozedur wiederholt.
Der wert wird "erstellt", auf 0 gesetzt, + 1 addiert und in dein panel geschrieben

das problem ist also nicht der timer sondern dein Wert!

schriebt man den code jetzt etwa so:
Delphi-Quellcode:
unit WinForm;

var
zahl:integer;

interface

uses
  System.Drawing, System.Collections, System.ComponentModel,
  System.Windows.Forms, System.Data, sysutils;

procedure TWinForm.Timer1_Tick(sender: System.Object; e: System.EventArgs);
begin
zahl:=zahl+1;
label1.Text:=inttostr(zahl);

end;

procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);

begin
     timer1.enabled:=true;

end;

end.
existiert die variable ja immer, da sie ja global ist. soll heißen: sie wird nie gelöscht oder neu erstellt.

einfacher wäre es aber den Timer so zu gestalten:
Delphi-Quellcode:
procedure TWinForm.Timer1_Tick(sender: System.Object; e: System.EventArgs);
begin

label1.Text:=inttostr(strtoint(label1.Text)+1);

end;
dann mpsstest du den text auf dem label am anfang nur auf "0" setzen und das selbe würde dabei herauskommen. mit dem unterschied das du keine variablebräuchtest.
  Mit Zitat antworten Zitat
 


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 03:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz