AGB  ·  Datenschutz  ·  Impressum  







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

Synchronize mit Argumenten

Ein Thema von Viktorii · begonnen am 9. Feb 2011 · letzter Beitrag vom 10. Aug 2011
Antwort Antwort
Seite 5 von 5   « Erste     345   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#41

AW: Synchronize mit Argumenten

  Alt 21. Feb 2011, 11:25
Nur um es mal erwähnt zu haben:
Delphi-Quellcode:
var S: String;

begin
  ...
  S := 'Hallo';
  TThread.Synchronize(nil,
    procedure
    begin
      Memo1.Lines.Add(S);
    end);
  ...
end;
PS: Ein Delphi/RAD 2009/2010/XE ist dafür schon nötig.
$2B or not $2B
  Mit Zitat antworten Zitat
Rob09

Registriert seit: 14. Aug 2007
58 Beiträge
 
Delphi 6 Personal
 
#42

AW: Synchronize mit Argumenten

  Alt 10. Aug 2011, 18:45
Sir Rufo hat folgendes vorgeschlagen (Beitrag #4):

Zitat:
Delphi-Quellcode:
procedure TMyOwnThread.CallError( const Content : string );
procedure SyncError;
begin
  if Assigned( FInstError )
    then FInstError( Content );
end;
begin
  Synchronize( SyncError );
end;
Bei mir meckert der Compiler da aber in der Synchronize(...)-Zeile: "Incompatible types: 'method pointer and regular procedure'". Jemand ne Ahnung, woran das liegen könnte? Delphi 6?

Gruß!
Robert
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Synchronize mit Argumenten

  Alt 10. Aug 2011, 18:51
Guck dir doch mal die beiden ersten Zeilen von deinem Code an. Fällt dir da nichts auf?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Rob09

Registriert seit: 14. Aug 2007
58 Beiträge
 
Delphi 6 Personal
 
#44

AW: Synchronize mit Argumenten

  Alt 10. Aug 2011, 18:55


Eigentlich nicht... Prozedur innerhalb Prozedur geht doch, oder?
  Mit Zitat antworten Zitat
Rob09

Registriert seit: 14. Aug 2007
58 Beiträge
 
Delphi 6 Personal
 
#45

AW: Synchronize mit Argumenten

  Alt 10. Aug 2011, 18:56
Ah, du meinst, das Problem ist, dass SyncError nicht mehr "procedure of object" ist?
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#46

AW: Synchronize mit Argumenten

  Alt 10. Aug 2011, 18:58
Ne, SyncError muss eine Klassenmethode sein
Sebastian
  Mit Zitat antworten Zitat
Rob09

Registriert seit: 14. Aug 2007
58 Beiträge
 
Delphi 6 Personal
 
#47

AW: Synchronize mit Argumenten

  Alt 10. Aug 2011, 19:01
Okay...

Eine Sub-Prozedur kann aber prinzipiell keine Klassenmethode sein, oder? D.h. wie wäre dann überhaupt Sir Rufos Vorschlag zu realisieren? Und wieso hatte damit noch niemand vor mir ein Problem???
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#48

AW: Synchronize mit Argumenten

  Alt 10. Aug 2011, 19:13
Okay...

Eine Sub-Prozedur kann aber prinzipiell keine Klassenmethode sein, oder? D.h. wie wäre dann überhaupt Sir Rufos Vorschlag zu realisieren? Und wieso hatte damit noch niemand vor mir ein Problem???
Dann lies mal bis Beitrag #10!
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Rob09

Registriert seit: 14. Aug 2007
58 Beiträge
 
Delphi 6 Personal
 
#49

AW: Synchronize mit Argumenten

  Alt 10. Aug 2011, 19:18
Boah, heute hab ich wirklich Tomaten auf den Augen

Danke für den Hinweis, hatte ich einfach übersehen.

Beste Grüße!
Robert
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#50

AW: Synchronize mit Argumenten

  Alt 10. Aug 2011, 19:28
Ne, SyncError muss eine Klassenmethode sein
Jupp, original mußte es so sein, aber seit den Generics gibt es ein zweites Synchronize, welches Prozeduren, Methoden, diese komischen Inline-Prozeduren (innerhalb einer anderen Prozedur/Methode, deren Name ich ständig vergesse) oder gar anonyme Methoden entgegennimmt.

Da kann man dann auch so kranke Sachen machen, wie eben dieses
Delphi-Quellcode:
var
  X: String;
begin
  X := 'Hallo Welt!';
  Synchronize(procedure
    begin
      ShowMessage(X);
    end);
end;
Geht aber erst seit D2009/D2010.
Aus einer TThread-Methode heraus und das in #41 geht überall.

Wenn man etwas nur an dieser Stelle synchronisieren will, dann finde ich es so viel übersichtlicher, da der Code dort steht, wo er aufgerufen wird.
Wird genügend Code an mehreren Stellen aufgerufen, dann natürlich immernoch die getrennte Methode,
wobei man in diesem Synchronize-Bereich auch eine Methode, mit Parametern, aufrufen kann.
$2B or not $2B

Geändert von himitsu (10. Aug 2011 um 19:35 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 5   « Erste     345   


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 14:32 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