![]() |
Übersetzung Class MagneticWindow
Wie in anderen Threads schon begonnen ..
Ich möchte meine Magnetic Class nach Delphi übersetzen um meinen MediPlayer stück für stück nach Delphi zu konvertieren. Die Classe emuliert die exakten Dockeigenschaften wie sie auch in Winamp zur verfügung stehen. Nach der Übersetzung werde ich sie hier zur verfügung stellen. Meine aktuelle frage.
Code:
Wie wird in Delphi Enum declariert ?
Vb:
Private Enum eMsgWhen [MSG_AFTER] = 1 [MSG_BEFORE] = 2 [MSG_BEFORE_AND_AFTER] = MSG_AFTER Or MSG_BEFORE End Enum gruß |
Re: Übersetzung Class MagneticWindow
Delphi-Quellcode:
Dabei wird aber die Wertbelegung anders gehandhabt. Das erste Element hat den Ordinalwert von 0, alle weiteren aufsteigend. Ich denke bei diesem Typ würde ein Set besser passen (vergleichbar mit einer Bitmaske):
Type
eMsgWhen = ( MSG_AFTER, MSG_BEFORE, MSG_BEFORE_AND_AFTER );
Delphi-Quellcode:
Dann hast du die Möglichkeit die Typen zu kombinieren:
Type
eMsgWhen = Set Of ( MSG_AFTER, MSG_BEFORE ); Beispiel:
Delphi-Quellcode:
Zu dem Hinzufügen und Entfernen kannst du auch die Funktionen Include() und Exclude() nutzen. Abfragen ob ein Element in der Menge ist geschieht mit IN:
Var
lVar: eMsgWhen; Begin lVar := []; // keins lVar := [MSG_AFTER, MSG_BEFORE]; // beide lVar := [MSG_AFTER]; // nur einer End;
Delphi-Quellcode:
If MSG_AFTER In lVar Then
ShowMessage('jo, after'); |
Re: Übersetzung Class MagneticWindow
Delphi-Quellcode:
wenn ich das richtig verstanden habe kann man den wert nicht direkt zuweisen.
Type
eMsgWhen = Set Of ( MSG_AFTER, MSG_BEFORE ); Würde bedeuten MSG_AFTER ist gleichzusetzen mit 0 ? gruß |
Re: Übersetzung Class MagneticWindow
Zitat:
Hinweis: Ich arbeite maximal mit Delphi 7, daher kann es gut sein, dass es in deiner Delphiversion die Möglichkeit der Wertzuweisung bei den Enum's gibt. Davon weiss ich aber nichts aus Ermangelung einer höheren Version. (Und ich weigere mich Dinge zu erlernen, die ich nicht praktisch anwenden kann...) |
Re: Übersetzung Class MagneticWindow
Zitat:
Es scheint so als wenn der compiler es annehmen würde. Kommt zumindest kein Fehler.
Delphi-Quellcode:
gruß
Type
eMsgWhen = Set Of (MSG_AFTER = 1, MSG_BEFORE = 2, MSG_BEFORE_AND_AFTER = MSG_AFTER Or MSG_BEFORE); // MSG_AFTER Message calls back after the original (previous) WndProc // MSG_BEFORE Message calls back before the original (previous) WndProc // MSG_BEFORE_AND_AFTER Message calls back before and after the original (previous) WndProc |
Re: Übersetzung Class MagneticWindow
Code:
Private Const ALL_MESSAGES As Long = -1 'All messages added or deleted
Private Const CODE_LEN As Long = 197 'Length of the machine code in bytes Private Const GWL_WNDPROC As Long = -4 'Get/SetWindow offset to the WndProc procedure address Private Const PATCH_04 As Long = 88 'Table B (before) address patch offset Private Const PATCH_05 As Long = 93 'Table B (before) entry count patch offset Private Const PATCH_08 As Long = 132 'Table A (after) address patch offset Private Const PATCH_09 As Long = 137 'Table A (after) entry count patch offset
Delphi-Quellcode:
Das dürfte wohl so stimmen, GWL_WNDPROC wird man wohl entfernen können
Const
ALL_MESSAGES : Integer = -1; //All messages added or deleted CODE_LEN : Integer = 197; //Length of the machine code in bytes GWL_WNDPROC : Integer = -4; //Get/SetWindow offset to the WndProc procedure address PATCH_04 : Integer = 88; //Table B (before) address patch offset PATCH_05 : Integer = 93; //Table B (before) entry count patch offset PATCH_08 : Integer = 132; //Table A (after) address patch offset PATCH_09 : Integer = 137; //Table A (after) entry count patch offset da die Const eigentlich in der Windows.pas vorhanden sein müßte.
Code:
Hier bin ich nicht sicher wie ich mit dem Variablen array verfahren soll.
Private Type tSubData 'Subclass data type
hwnd As Long 'Handle of the window being subclassed nAddrSub As Long 'The address of our new WndProc (allocated memory). nAddrOrig As Long 'The address of the pre-existing WndProc nMsgCntA As Long 'Msg after table entry count nMsgCntB As Long 'Msg before table entry count aMsgTblA() As Long 'Msg after table array aMsgTblB() As Long 'Msg Before table array End Type Edit: Denke so gehts!
Delphi-Quellcode:
gruß
Type TSubData = ^SubData; //Subclass data type
SubData = record hwnd : Integer; //Handle of the window being subclassed nAddrSub : Integer; //The address of our new WndProc (allocated memory). nAddrOrig : Integer; //The address of the pre-existing WndProc nMsgCntA : Integer; //Msg after table entry count nMsgCntB : Integer; //Msg before table entry count aMsgTblA : array [] of Integer; //Msg after table array aMsgTblB : array [] of Integer; //Msg Before table array End; |
Re: Übersetzung Class MagneticWindow
In der Standardeinstellung sind deine Konstanten nicht wirklich konstant: man kann ihnen Werte zuweisen. So sind es dann statische Variablen.
Warum definierst du einen Zeiger auf die Struktur? Im Normalfall wird mit Txxx eine Klasse oder eine Struktur gekennzeichnet. Einem Zeiger auf eine Struktur wird im Normalfall ein Pxxx anstatt einem Txxx vorangestellt. Und die [] bei dem Array kannst du getrost weglassen... |
Re: Übersetzung Class MagneticWindow
Zitat:
Delphi-Quellcode:
Mit den Zeiger habe ich mir abgeschaut um die Leute hier nicht zu nerven :oops:
Type PSubData = ^TSubData; //Subclass data type
TSubData = record hwnd : Integer; //Handle of the window being subclassed nAddrSub : Integer; //The address of our new WndProc (allocated memory). nAddrOrig : Integer; //The address of the pre-existing WndProc nMsgCntA : Integer; //Msg after table entry count nMsgCntB : Integer; //Msg before table entry count aMsgTblA : array of Integer; //Msg after table array aMsgTblB : array of Integer; //Msg Before table array End; Wird hier kein zeiger benötigt? Und wenn warum ? gruß |
Re: Übersetzung Class MagneticWindow
Wenn möglich sollte man wohl bei Integer- und Stringkonstanten keinen Typ angeben
Delphi-Quellcode:
Das hat vorallem den Vorteil, daß der Typ nicht schon da festgelegt ist und dieser dann anhand des Wertes und bei direkter Übergabe anhand des dortigen Types vom Compiler festgelegt wird.
const
abc = 123; def = 'xyz'; Speziell den String kann man dann auch als WideString/PWideChar übergeben, ohne daß es zu inkompatiblen Typen (AnsiString<>WideString und PAnsiChar<>PWideChar) kommt. |
Re: Übersetzung Class MagneticWindow
Zitat:
Hab sowieso meine problem mit der konvertierung von einigen variablen. Aber das kommt noch ;) Eile mit weile. werd dann mal die integer alle löschen ;) gruß |
Re: Übersetzung Class MagneticWindow
Mal etwas ganz anderes - bei Deiner Kurzbeschreibung was Deine Magnetic-Klasse macht solltest Du vielleicht mal unter
![]() |
Re: Übersetzung Class MagneticWindow
Zitat:
Bin mit dieser Klasse eigentlich bisher sehr gut gefahren mit meinen Player. Möchte wenn möglich meinen Code(VB) so halbwegs erhalten. Übung in soweit das wenn ich meinen Player umschreibe ich auf die bisher gewonnenen Erkenntnisse zurückgreifen kann. Werde mir das Projekt 'DockSite' wenn es eins ist trotzdem einmal anschauen ;) EDIT; Sehe gerade du meinst die Delphi Hilfe ..... :-D gruß |
Re: Übersetzung Class MagneticWindow
Zitat:
|
Re: Übersetzung Class MagneticWindow
Zitat:
Nein das ist etwas komplett anderes da geht es um Docking in einer MDI Form Komponente innerhalb einer Form andocken. Bei mir docken alle übergebenen Fenster gegenseitig an Und können über das Hauptfenster(Applikation) gleichzeitig verschoben werden. EDIT: Ich will aber niemanden nerven oder das Forum zumüllen. :roll: Traue mich jetzt gar nicht mehr zu fragen :cry: Gruß |
Re: Übersetzung Class MagneticWindow
Problem mit Property
Delphi-Quellcode:
Type TMagnetic = class
constructor Create; constructor Destroy; private function GetSnapWidth: Integer; procedure SetSnapWidth(NewSnapWidth: Integer); public property SnapWidth: Integer read GetSnapWidth write SetSnapWidth;
Delphi-Quellcode:
In Create wird die default SnapWidth zugewiesen.
function TMagnetic.GetSnapWidth: Integer;
begin Result := SnapWidth; end; procedure TMagnetic.SetSnapWidth(NewSnapWidth: Integer); begin SnapWidth := NewSnapWidth; end;
Delphi-Quellcode:
Hier kommt der Fehler!
constructor TMagnetic.create;
begin // Default snap width SnapWidth := 10; // Initialize array (handled windows info) m_lWndCount := 0; end;
Delphi-Quellcode:
Case True of
Abs(rcTmp.x1 - x1) < SnapWidth: rcWnd.x1 := x1; Abs(rcTmp.x1 - x2) < SnapWidth: rcWnd.x1 := x2; End; Zitat:
gruß |
Re: Übersetzung Class MagneticWindow
Delphi-Quellcode:
Also diese Kombination ist schon mal tödlich, da rekursiv - der Getter ruft die Property auf, diese wieder den Getter... Du solltest ein internes Feld anlegen (FSnapWidth).
function TMagnetic.GetSnapWidth: Integer;
begin Result := SnapWidth; end; property SnapWidth: Integer read GetSnapWidth write SetSnapWidth;
Delphi-Quellcode:
Geht übrigens vollautomatisch, wenn Du auf der Zeile stehst...
TMagnetic = class
private FSnapWidth: integer; procedure SetSnapWidth(const Value: integer); public Property SnapWidth : integer read FSnapWidth write SetSnapWidth; end;
Delphi-Quellcode:
... und dann Strg-Shift-C drückst!
Property SnapWidth : integer
Uups, sorry xaromz da war ich wohl wieder zu schnell... |
Re: Übersetzung Class MagneticWindow
Hallo,
Zitat:
Delphi-Quellcode:
hast Du eine Rekursion gebaut. Die Zuweisung ruft ja wieder SetSnapWidth auf!
procedure TMagnetic.SetSnapWidth(NewSnapWidth: Integer);
begin SnapWidth := NewSnapWidth; end;
Delphi-Quellcode:
Das Problem ist, dass die Werte, die bei case als Möglichkeiten angegeben werden, Konstanten sein müssen.
Case True of
Abs(rcTmp.x1 - x1) < SnapWidth: rcWnd.x1 := x1; Abs(rcTmp.x1 - x2) < SnapWidth: rcWnd.x1 := x2; End; Du musst das also umformulieren:
Delphi-Quellcode:
Gruß
case Abs(rcTmp.x1 - x1) < SnapWidth of
True: rcWnd.x1 := x1; False: rcWnd.x1 := x2; end; xaromz |
Re: Übersetzung Class MagneticWindow
Ich glaube er meint aber:
Delphi-Quellcode:
if (Abs(rcTmp.x1 - x1) < SnapWidth) then rcWnd.x1 := x1;
if (Abs(rcTmp.x1 - x2) < SnapWidth) then rcWnd.x1 := x2; |
Re: Übersetzung Class MagneticWindow
Zitat:
Delphi-Quellcode:
grußCase True of Abs(rcTmp.x1 - x1) < SnapWidth: Begin lOffx := x1 - rcTmp.x1; end; Abs(rcTmp.x1 - x2) < SnapWidth: Begin lOffx := x2 - rcTmp.x1; end; Abs(rcTmp.x2 - x1) < SnapWidth: begin lOffx := x1 - rcTmp.x2; end; Abs(rcTmp.x2 - x2) < SnapWidth: begin lOffx := x2 - rcTmp.x2; end; End; |
Re: Übersetzung Class MagneticWindow
Zitat:
Bei dieser Kombination wir die procedure automatisch erstellt aber ohne Inhalt :) Zitat:
Delphi-Quellcode:
gruß
function TMagnetic.GetSnapWidth: Integer;
begin Result := SnapWidth; end; |
Re: Übersetzung Class MagneticWindow
Genau das sorgt ja für die Rekursion. Die Property heisst SnapWidth. Der Getter heist GetSnapWidth. Wenn innerhalb des Getters wieder SnapWidth steht, wird die Property angesprochen. Diese ruft den Getter auf etc. Der ursprüngliche Tip mit der Klassenvervollständigung kam nicht von mir.
|
Re: Übersetzung Class MagneticWindow
Zitat:
Code:
Bei Let wird der neue Wert m_lSnapWidth zugewiesen wenn
Public Property Get SnapWidth() As Long
SnapWidth = m_lSnapWidth End Property Public Property Let SnapWidth(ByVal New_SnapWidth As Long) m_lSnapWidth = New_SnapWidth End Property dieser übergeben wird ..
Code:
und in der Public Variablen m_lSnapWidth gespeichert.
Private Sub Class_Initialize()
'-- Default snap width m_lSnapWidth = 10 // Hier wird er übergeben beim initialisieren der klasse '-- Initialize array (handled windows info) ReDim m_uWndInfo(0) As WND_INFO m_lWndCount = 0 End Sub Über 'Get SnapWidth' kann ich die Variable abfragen welchen aktuellen wert sie hat. Klappt in VB !:) gruß |
Re: Übersetzung Class MagneticWindow
Hallo,
Zitat:
In Delphi sehen Getter und Setter so aus:
Delphi-Quellcode:
Zusätzlich wird unter private ein Feld FSnapWidth angelegt, in dem die Werte dann gespeichert werden.
function TMagnetic.GetSnapWidth: Integer;
begin Result := FSnapWidth; end; procedure TMagnetic.SetSnapWidth(const Value: Integer); begin FSnapWidth := Value; end; Gruß xaromz |
Re: Übersetzung Class MagneticWindow
So gehts !
Delphi-Quellcode:
Danke.
WMSZ_LEFT, WMSZ_TOPLEFT, WMSZ_BOTTOMLEFT:
begin case Abs(rcTmp.x1 - x1) < SnapWidth of True: rcWnd.x1 := x1; end; case Abs(rcTmp.x1 - x2) < SnapWidth of true: rcWnd.x1 := x2; End; End; Gruß |
Re: Übersetzung Class MagneticWindow
Zitat:
Warum wird dann in der procedure nicht auch GetSnapWidth übergeben
Delphi-Quellcode:
anstatt
property SnapWidth: Integer read GetSnapWidth write SetSnapWidth;
Delphi-Quellcode:
GetSnapWidth wird dann doch nirgends aufgerufen oder?
property SnapWidth: Integer read FSnapWidth write SetSnapWidth;
gruß |
Re: Übersetzung Class MagneticWindow
Man kann beide Möglichkeiten verwenden. Solange der Getter nur einen Wert zurückliefert, kann man sich die Get-Funktion sparen und direkt den Wert über die read-Direktive ansprechen. Anders sieht es aus, wenn der Getter aktiv einen Wert ermittelt.
Und man sollte die Get/Set-Funktionen nur in der Deklaration anwenden. Entweder man spricht innerhalb derselben Klasse direkt die Variablen an (in Sonderfällen, wenn man z.B. Rekursion vermeiden will) oder über den Namen der Property. Innerhalb einer Klasse mit einfachen Set/Get gilt ja Property <=> Getter <=> Feld. |
Re: Übersetzung Class MagneticWindow
Schwierig!!
Dieser Hexadezimale String
Delphi-Quellcode:
sSubCode := '5589E583C4F85731C08945FC8945F8EB0EE80000000083F802742185C07424E830000000837DF800750AE838000000E84D0000005F8B
45FCC9C21000E826000000EBF168000000006AFCFF7508E800000000EBE031D24ABF00000000B900000000E82D000000C3FF7514FF75 10FF750CFF75086800000000E8000000008945FCC331D2BF00000000B900000000E801000000C3E32F09C978078B450CF2AF75248D451 4508D4510508D450C508D4508508D45FC508D45F85052B800000000508B00FF501CC3' wird über eine split function in Byte konvertiert und in einen statischen Buffer kopiert. Jetzt kommt in Delphi die meldung String zu lang! EDIT: habs versucht mit WideString, PWChar usw ... Hat sich erledigt!
Delphi-Quellcode:
gruß
If (sc_aBuf[1] = 0) Then
Begin //Build the hex pair subclass string sSubCode := '5589E583C4F85731' + 'C08945FC8945F8EB' + '0EE80000000083F8' + '02742185C07424E8' + '30000000837DF800' + '750AE838000000E8' + '4D0000005F8B45FC' + 'C9C21000E8260000' + '00EBF16800000000' + '6AFCFF7508E80000' + '0000EBE031D24ABF' + '00000000B9000000' + '00E82D000000C3FF' + '7514FF7510FF750C' + 'FF75086800000000' + 'E8000000008945FC' + 'C331D2BF00000000' + 'B900000000E80100' + '0000C3E32F09C978' + '078B450CF2AF7524' + '8D4514508D451050' + '8D450C508D450850' + '8D45FC508D45F850' + '52B800000000508B' + '00FF501CC3'; |
Re: Übersetzung Class MagneticWindow
Hm...
Erhlich gesagt finde ich, du solltest dich erstmal mit der Sprache auseinandersetzen. Eine native, kompilierte, statisch geprüfte, objektorientierte Sprache verhält sich komplett einfach komplett[1] anders als ein interpretiertes Skript. Es gibt einige Tutorials bei DSDT.de, sehr nett ist auch ![]() Was du da gerade machst ist ein VB "Programm" Stück für Stück zu Delphi rüberzufriemeln. Was am Ende dabei rauskommt ist dann ein VB Programm in Delphi-Syntax. Wenn du es ganz locker angehst, und einfach mit der Sprache spielst(siehe Tutorials, Beispiele hinter den Links oben) bevor du eine wirkliche Anwendung baust/portierst, wirst du vllt schneller/besser die Eleganz hinter der Art & Weise entdecken in der Delphi Objektorientierung implementiert. Order einfach die Tatsache, dass ein Stringliteral in Delphi max. 255 Zeichen lang ist. :zwinker: Dass Problem wird wohl sein, dass je mehr Erfahrung man in VB hat, umso schwieriger wird es sein, seine Erfahrungen komplett wegzuwerfen und neu anzufangen. Genau das müsstest nämlich machen. ;) [1]ich meine "komplett anders" im Sinne von "Ähnlichkeiten sind eher zufällig" |
Re: Übersetzung Class MagneticWindow
Zitat:
Aber warum soll man gute (bewährte klassen ) aus VB nciht nach Delphi portieren können. Denke mal das man auch so lernen kann wenn auch etwas umständlicher. :? Aber grundsätzlich gebe ich dir Recht! :-D Zitat:
EDIT:So unterschiedlich von der Syntax her ist VB/Delphi nun auch wieder nicht! Wenn es dann mal übersetzt ist fragt niemand mehr auf welche weise dies geschehen ist Wie willst du dann noch den ansatz oder ähnlichkeiten zu VB erkennen? Wenn hier jemand einen Quelltext oder codeschnipsel aus den Forum verwendet interessiert es ihn auch nicht wie der Author den erstellt hat.Für ihn zählt nur das er es verwenden kann. Also! Am ende zählt das ergebniss wie man dahin gelangt ist letztendlich egal. gruß |
Re: Übersetzung Class MagneticWindow
Zitat:
Ich sage nicht, dass es unmöglich ist. Ich habe mir bis jetzt jede Programmiersprache selbst beigebracht, aber ich gehöre auch eher zu den Masochisten. :mrgreen: Zitat:
Zitat:
Was du oben gemacht hast ist einen String aus mehren Literalen zusammenzusetzen, die < 255 sind. ;) Zitat:
|
Re: Übersetzung Class MagneticWindow
Nur am Rande!
Nuja da sind wir wieder bei den leidigen Problem Delphi via Vb! Von Delphi hat noch niemand gesprochen als die von dir so verspottete Sprache (Basic)-VB schon aus den gröbsten raus war. Bill Gates hat nicht umsonst solange an VB festgehalten oder wurde er mit Delphi reich? Frag ihn mal wie es war als er mit Hilfe von Basic das erste Betriebssystem in seiner Garage entwickelt hat. Gehe mal davon aus das er dann auch zu denjenigen gehört welche von deiner unheilbar chronischen Allergie betroffen sind. :? Will damit nur sagen Basic war der anfang.. da kann sich Delphi winden wie es will! Ich frage mich nur woher kommt die scriptsprache welche von Delphi verwendet wird ? Ohhhh hat schon seinen grund das sie sich so ähnlich sind. Aber trotzdem nur weil die Leute hier zuerst mit Delphi angefangen haben muss ich noch lange keine Allergie gegen diese haben. Mit meinen 48 beurteile ich die Menschen nach anderen Kriterien ! Und nicht nach einer Sprache die sie irgendwann benutzt haben oder noch benutzen. gruß |
Re: Übersetzung Class MagneticWindow
[OT]Es ist doch schön dass nicht jede Programmiersprache komplett unterschiedlich ist. BTW hat Bill Gates kein Betriebssystem geschrieben mit Basic. Er hat eins "weiterverkauft". Und Pascal gründet sich auf ALGOL und nicht auf Basic.[/OT]
Und kommen wir wieder zu etwas ganz anderem, nämlich Deiner TMagnetic-Klasse ;) |
Re: Übersetzung Class MagneticWindow
Noch ein Hinweis zu der Klasse auf Seite 1 auf den noch niemand hingewiesen hat: Der Destructor "Destroy" wird mit Destructor und nicht Constructor gekennzeichnet. Auch muss beim Destructor ein "Override;" hinter der Deklaration, da der Destructor als virtuell deklariert ist in TObject.
|
Re: Übersetzung Class MagneticWindow
Zitat:
Das von dir hier angesprochene Problem habe ich schon herausgefunden ;) Trotzdem Danke. |
Re: Übersetzung Class MagneticWindow
Zitat:
Gefriemel hin gefriemel her.. Nichts ist unmöglich und was unmöglich ist das machen wir möglich! :-D Gruß |
Re: Übersetzung Class MagneticWindow
Zitat:
Nicht immer alles auf die schlimmstmögliche Art auslegen, sonst kriegst du noch grundlos Magengeschwüre. :zwinker: |
Re: Übersetzung Class MagneticWindow
Zitat:
Das hindert mich aber nicht daran es weiter zu versuchen. Freue mich über jede Hilfe 2. War auch nicht auf dich bezogen .. du hast es nur angesprochen das Thema. Habe ja schon eine kleine Anwendung geschrieben auch wenn es sich nur um eine Design Studie handelt (Winamp Skin). Dann lassen wir das Thema hat ja nichts mit dem Thread zu tun!;) Gruß .. Nix für ungut |
Re: Übersetzung Class MagneticWindow
Neuer versuch nächstes Problem :-D
Delphi-Quellcode:
function TMagnetic.zIdx(lng_hWnd: Integer; bAdd: Boolean = False): Integer;
//Get the sc_aSubData() array index of the passed hWnd //Get the upper bound of sc_aSubData() //If you get an error here, you're probably Subclass_AddMsg-ing before Subclass_Start begin zIdx := UBound(sc_aSubData); While zIdx >= 0 Do //Iterate through the existing sc_aSubData() elements With sc_aSubData[zIdx] do begin If (hwnd = lng_hWnd) Then //If the hWnd of this element is the one we're looking for begin If (Not bAdd) Then //If we're searching not adding Exit; //Found If (hwnd = 0) Then //If this an element marked for reuse. begin If (bAdd) Then //If we're adding Exit; end; End; End; dec(zIdx); //Decrement the index End; Zitat:
Ebenso funktioniert diese abfrage nicht 'While zIdx >= 0 Do' Fehler meldung Zitat:
Das scheint zu funktionieren zIdx := zIdx(lng_hWnd) - 1; aber irgendwie unlogisch. gruß |
Re: Übersetzung Class MagneticWindow
In der Standardkonfiguration heißt es result (extended Syntax). Das hat den Vorteil, dass man die Funktion umbenennen kann, ohne den evtl. verwendeten Namen 20 Mal ebenfalls ändern zu müssen. Und es ermöglicht Rekursion, wenn gewollt.
|
Re: Übersetzung Class MagneticWindow
Du hast 100%ig zIdx nicht nochmal woanders verwendet bzw. deklariert? z.B. als Funktionsname?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:27 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 by Thomas Breitkreuz