![]() |
AW: Edit.text 5 mal Blinken lassen
Schau Dir doch meinen Code von
![]()
Delphi-Quellcode:
private
{ Private-Deklarationen } FOriginalString: string; FCounter: integer; FEditDasBlinkenSoll: TEdit; // <-- 1 2 3 keine Hexerei procedure Blink; |
AW: Edit.text 5 mal Blinken lassen
Danke für die Hilfe und da ich Faul und unverbesserlich bin habe ich es so gemacht
Delphi-Quellcode:
procedure TForm3.SpielerKeyPress(Sender: TObject; var Key: Char);
var Spieler:TEdit; begin Spieler:=TEdit(Sender); st:=Tstringlist.Create; st.Add(Spieler.text); st.Add((Sender as TComponent).Name); if Key = #13 then begin key := #0;//schalt sound ab Timer1.Interval := 500; Timer1.Enabled := true; end; end; procedure TForm3.Timer1Timer(Sender: TObject); var Spieler: TEdit; begin Spieler := TEdit(FindComponent(st.Strings[1])); if Spieler.Text = st.Strings[0] then Spieler.text := '' else if Spieler.text = '' then Spieler.Text := st.Strings[0]; Timer1.Tag := Timer1.tag+1; if Timer1.Tag = strtoint(st.Strings[0])*2 then Timer1.Enabled := false; if Timer1.Enabled=false then st.Free; if Timer1.Enabled=false then Timer1.Tag:=0; end; |
AW: Edit.text 5 mal Blinken lassen
Da bin ich mal gespannt, wieviel Tasten Du drücken kannst, bevor Dir der Speicher ausgeht.
|
AW: Edit.text 5 mal Blinken lassen
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
steht der alte Text und nicht die Anzahl?
st.Strings[0]
Ach ja, den StringListe könnte man natürlich im OnCreate erstellen und im OnDestroy freigeben. Oder man verwendet gleich zwei einzelne String-Konstanten (oder, halt einen String und einen Objektzeiger). Zitat:
Und natürlich ist dann auch der "alte" Text weg, wenn man grade dann nochmal drückt, während der Text grade ausgeblendet ist. Das
Delphi-Quellcode:
wurde doch bestimmt auch schon mehrmals erwähnt?
if ... = false
|
AW: Edit.text 5 mal Blinken lassen
Zitat:
Ich würde dieses Problem generell lösen. Es gibt da also etwas, was innerhalb eines bestimmten Zeit-Intervalls x mal wiederholt werden soll.
Delphi-Quellcode:
Einen Timer an TTimedActions.Trigger verdrahtet und die ActionItems feuern dann, wenn denen danach ist.
TTimedActionItem = class
property Interval : cardinal; property Count : cardinal; property OnExecute : TNotifyEvent; procedure Trigger; end; TTimedActions = class property ActionCount : Integer; property Actions[index:Integer] : TTimedActionItem; procedure AddAction( Action : TTimedActionItem ); procedure Trigger; end; procedure TTimedActions.Trigger; var LIdx : integer; begin for LIdx := 0 to ActionCount - 1 do Actions[LIdx].Trigger; end; |
AW: Edit.text 5 mal Blinken lassen
Und dann die TTimedActions-Instanz in einer Stringliste ablegen :mrgreen:
|
AW: Edit.text 5 mal Blinken lassen
was passiert eigentlich so speichermäßig genau wenn man folgendes macht?
Delphi-Quellcode:
SL := TStringList.Create;
SL.Add('test'); SL := TStringList.Create; SL := TStringList.Create; SL := TStringList.Create; |
AW: Edit.text 5 mal Blinken lassen
Damit hast Du 4 Stringlist-Instanzen, von denen Du noch eine ansprechen und freigeben kannst, der Rest verbraucht nur noch Speicher und bringt Dir nichts.
|
AW: Edit.text 5 mal Blinken lassen
Ausprobieren?
Delphi-Quellcode:
4 Speicherlecks (die ersten 3 Stringlisten und der eine String)
ReportMemoryLeaksOnShutdown := True;
SL := TStringList.Create; SL.Add('test'); SL := TStringList.Create; SL := TStringList.Create; SL := TStringList.Create; ShowMessage(SL.Text); SL.Free; |
AW: Edit.text 5 mal Blinken lassen
also sollte ich die Tstringliste nur in der Form create setzen damit siw nur einmal erstellt wird.
Mit dem st.free gebe ich nur die gespeichert strings frei richtig wäre das so etwas korreker...??? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:57 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