AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [Prism] Delegates von C# nach Prism übersetzen.
Thema durchsuchen
Ansicht
Themen-Optionen

[Prism] Delegates von C# nach Prism übersetzen.

Ein Thema von Tonic1024 · begonnen am 19. Nov 2009 · letzter Beitrag vom 20. Nov 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#11

Re: [Prism] Delegates von C# nach Prism übersetzen.

  Alt 20. Nov 2009, 15:55
Okay... Ich bin durch try and error und durch deine Bemerkung mit der Methode grad drauf gekommen...
Delphi-Quellcode:
API:= new Vertraulich;
API.Phone_GetNetState(@GetNetState_Callback);
So gehts. Hab's nur nicht gleich gemerkt, weil ich versucht hab ein visuelles Objekt zu updaten.

Ich weiss... Neue Frage neuer Thread. Aber vielleicht gibts ja ne ganz einfache Antwort darauf. Warum geht der Code aus GetNetState_Callback (Post #7) jetzt nicht? Messagebox geht aber obriger Code nicht ?!?

Und nochwas... was ist der Reflector und wo finde ich den? Hab ein deutsches Prism - heisst der vielleicht anders oder ist das ein externes Tool?


Toni
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#12

Re: [Prism] Delegates von C# nach Prism übersetzen.

  Alt 20. Nov 2009, 16:11
Der Reflector ist ein externes Tool und den gibts hier: http://www.red-gate.com/products/reflector/

Generell gilt:
Zitat von Tonic1024:
Warum geht der Code aus GetNetState_Callback (Post #7) jetzt nicht? Messagebox geht aber obriger Code nicht ?!?
ist eine ungeheuer aussagekräftige Fragestellung. WAS geht daran denn nicht? Wie hast Du das getestet?
Delphi-Quellcode:
method MainForm.GetNetState_Callback(handle: IntPtr; ret: eTYPE_RETURN; State: UInt32);
begin
  if State = 1 then
    Label8.Visible:=true
  else
    Label8.Visible:=false;
end;
geht nicht aber:
Delphi-Quellcode:
method MainForm.GetNetState_Callback(handle: IntPtr; ret: eTYPE_RETURN; State: UInt32);
begin
  MessageBox.Show('State ist ' + State.ToString());
end;
funktioniert?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#13

Re: [Prism] Delegates von C# nach Prism übersetzen.

  Alt 20. Nov 2009, 16:22
Exakt...

Hatte jetzt nicht vermutet, dass das so tiefgründig war. Wär ich jetzt in Delphi32 hätte ich vermutet dass da jetzt jemand kommt und sagt: Ach, das... Mach mal ein "ProcessMessages" oder ein "Synchronize" rein, denn geht das.

Könnte mir halt vorstellen, dass der Callback asynchron rein kommt und das GUI nicht updaten kann. Und da hab ich halt einfach angenommen dafür gäbs ein Patentrezept.

Toni
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#14

Re: [Prism] Delegates von C# nach Prism übersetzen.

  Alt 20. Nov 2009, 16:38
Zitat von Tonic1024:
Könnte mir halt vorstellen, dass der Callback asynchron rein kommt und das GUI nicht updaten kann. Und da hab ich halt einfach angenommen dafür gäbs ein Patentrezept.
Ah. Jo, dafür gibts eins
Delphi-Quellcode:
method MainForm.GetNetState_Callback(handle: IntPtr; ret: eTYPE_RETURN; State: UInt32);
begin
  SetControlVisibility(Label8, State = 1);
end;

method MainForm.SetControlVisibility(ctrl: Control; newVisibilty: Boolean);
begin
  if ctrl.InvokeRequired then
  begin
    ctrl.Invoke(method begin SetControlVisibility(ctrl, newVisibility); end);
    exit;
  end;

  ctrl.Visible := newVisibility;
end;
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#15

Re: [Prism] Delegates von C# nach Prism übersetzen.

  Alt 20. Nov 2009, 18:02
Das ist exakt was ich meinte.

Grad fällt mir auf, dass dort noch andere Events gesynct auf der Oberfläche "herumkritzeln". Das kracht von Zeit zu Zeit. Aber Um diese Detail muss ich mich nach meinem Urlaub kümmern.

Vielen Dank für die rasche Hilfe.


Toni
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#16

Re: [Prism] Delegates von C# nach Prism übersetzen.

  Alt 20. Nov 2009, 18:42
Der Teil
Delphi-Quellcode:
  if ctrl.InvokeRequired then
  begin
    ctrl.Invoke(method begin SetControlVisibility(ctrl, newVisibility); end);
    exit;
  end;
Ist das pattern was man hier ansetzt. Es dürfte in ein paar Tagen auch einen Aspekt dafür geben. Dann muss man nur noch
[Aspect:SyncWithUIThreadIfNeeded] (oder so ähnlich) über die Methodendeklaration setzen und *wuppdi* macht Cirrus das automatisch
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:54 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