AGB  ·  Datenschutz  ·  Impressum  







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

HideCaret in einem Thread?

Ein Thema von 1234588 · begonnen am 11. Feb 2007 · letzter Beitrag vom 11. Feb 2007
Antwort Antwort
1234588

Registriert seit: 14. Jan 2007
Ort: Stuttgart
164 Beiträge
 
#1

HideCaret in einem Thread?

  Alt 11. Feb 2007, 00:04
folgendes, ich möchte gerne meine ersten threading versuche machen und bin teilweise daran gescheitert ._.

mein thread:
Code:
Unit caretthread;

interface

uses
  classes,
  windows;

type
  Tcaretthread = Class(TThread)
    private
      frm: Cardinal;
    protected
       procedure execute; override;
    public
       constructor create; virtual;
       procedure sethandle(carethwnd: cardinal); virtual;
    end;

implementation

procedure Tcaretthread.execute;
var b: boolean;
begin
  b:=false;
  while b=false do hidecaret(frm);
end;

procedure Tcaretthread.sethandle(carethwnd: Cardinal);
begin
  frm := carethwnd;
end;

constructor Tcaretthread.create;
begin
  inherited create(true);
  freeOnTerminate := true;
end;

end.
und mein aufruf:
Code:
  caret := Tcaretthread.create;
  caret.sethandle(richedit1.handle);
  caret.resume;
ob es sinnvoll ist, ist mal dahingestellt
ist mein erster versuch mit threads und deshalb gehe ich auch davon aus das er sehr reich an fehlern ist
was ich nun nicht verstehe ist, wenn ich die zeile
while b=false do hidecaret(frm);
in
while b=false do beep(1000, 100);
abändere funktioniert das ganze
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: HideCaret in einem Thread?

  Alt 11. Feb 2007, 01:19
Triift das zu:
Zitat:
HideCaret hides the caret only if the specified window owns the caret.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
1234588

Registriert seit: 14. Jan 2007
Ort: Stuttgart
164 Beiträge
 
#3

Re: HideCaret in einem Thread?

  Alt 11. Feb 2007, 02:22
hm blöd aber ergibt eigentlich sinn
wäre ja schlimm wenn irgendwelche schadsoftware meinen geliebten caret verschwinden lässt

vielen dank
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: HideCaret in einem Thread?

  Alt 11. Feb 2007, 12:33
Moin 1234588,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Was mir als erstes ins Auge sticht:

while b=false do Sollte besser heissen:

while not b do Der direkte Vergleich würde hier wohl funktionieren, aber zum einen ist die zweite Variante gemeinhin lesbarer, zum anderen kann man sich u.U. Probleme einhandeln, wenn man sich daran gewöhnt so zu vergleichen, da, i.d.R. false als 0, true aber als <> 0 verstanden wird.

Ich bin mir nicht ganz sicher, ob Deine Vorgehensweise garantiert sicher funktioniert.
Du greifst mit HideCaret auf eine VCL-Komponente (TRichEdit) zu. Dies sollte man aber nur über die Thread-Methode Synchronize tun, da die VCL-Komponenten nicht garantiert thread-safe sind.
Der Zugriff erfolgt zwar indirekt, über Handle, aber es könnte sein, dass das dennoch zu Problemen führt.
(wie gesagt: Sicher bin ich mir nicht).
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 01:33 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