AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Brauche hilfe bei übersetzung von C# in ObjectPascal (.Net)
Thema durchsuchen
Ansicht
Themen-Optionen

Brauche hilfe bei übersetzung von C# in ObjectPascal (.Net)

Ein Thema von Taladan · begonnen am 13. Jul 2005 · letzter Beitrag vom 20. Jul 2005
Antwort Antwort
Robert_G
(Gast)

n/a Beiträge
 
#1

Re: Brauche hilfe bei übersetzung von C# in ObjectPascal (.N

  Alt 14. Jul 2005, 20:15
Zitat von Taladan:
PS: Ich habe mir vorgenommen die Komponente nicht nur zu verwenden, sondern möglichst auch zu verstehen, was ich verwende... (hoffentlich klappt das)
Guter Vorsatz! Du solltest aber flexibler im Umgang mit dem MSDN, der .Net OH und der spachreferenz von D.Net sein.

Zitat von Taladan:
Was ich nur überhaupt nicht zuordnen kann, und damit die Übersetzung übersetzten sind diese Zeilen:
Na dann...

strict private class extern function SendMessage(hWnd: IntPtr; msg: Message; wParam: IntPtr; lParam: IntPtr): IntPtr; static; Das ist die Deklaration einer externen Funktion. also einer, die nicht durch .Net sondern von einer Win32 DLL bereitgestellt wird.

Delphi-Quellcode:
strict private CharFormat2Effect = (Link=32, None=0);
strict private CharFormat2Mask = (Link=32);
strict private Message = (GetCharFormat=1082, SetCharFormat=1092, User=1024);
Das sind Aufzählungstypen ähnlich zu denen aus Delphi32.
Ich halte es in den meisten Fällen für eine schlechte Idee in .Net normale numerische Konstanten zu verwenden.
Erstens müllt man sich schnell mit kryptischen Bezweichnern zu und zweitens sind Auzählungen type safe.
Du kannst einer Variable vom Typ Message nur Werte vom Typ Message zuweisen, aber du kannst einen Message-Wert immer von<->zu seinem Basistypen umwandeln. (hier der Standardtyp für Aufzählungen: Integer/Int32)
Da Aufzählungen zur Laufzeit exakt das gleiche Verhalten wie eine numerische Konstante haben gibt es keinerlei Nachteile.
Ich hatte die Deklaration von SendMessage so geändert, dass es msg vom Typen Message schluckt.
Der Marshaler wird es automatisch als richtigen numerischen Wert behandeln, aber zur compilezeit bekommst du einen Fehler, wenn du einen anderen (hier sinnlosen) Wert zuweisen willst.
Möglich sind hier also nur die 3 Werte:
Delphi-Quellcode:
Message.GetCharFormat
Message.GetCharFormat
Message.User
Ich hoffe das half etwas weiter...
  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 12:07 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