AGB  ·  Datenschutz  ·  Impressum  







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

Übersetzung Class MagneticWindow

Ein Thema von EWeiss · begonnen am 9. Okt 2006 · letzter Beitrag vom 18. Dez 2006
Antwort Antwort
Seite 3 von 12     123 45     Letzte »    
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#21

Re: Übersetzung Class MagneticWindow

  Alt 10. Okt 2006, 17:16
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.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#22

Re: Übersetzung Class MagneticWindow

  Alt 10. Okt 2006, 17:28
Zitat von Union:
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.
Ok verstehe.. obwohl igendwie nicht logisch! in Delphi


Code:
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
Bei Let wird der neue Wert m_lSnapWidth zugewiesen wenn
dieser übergeben wird ..

Code:
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
und in der Public Variablen m_lSnapWidth gespeichert.
Über 'Get SnapWidth' kann ich die Variable abfragen welchen aktuellen wert sie hat.

Klappt in VB !

gruß
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#23

Re: Übersetzung Class MagneticWindow

  Alt 10. Okt 2006, 17:37
Hallo,
Zitat von EWeiss:
und in der Public Variablen m_lSnapWidth gespeichert.
Über 'Get SnapWidth' kann ich die Variable abfragen welchen aktuellen wert sie hat.

Klappt in VB !
Das klappt auch wunderbar in Delphi. Aber wo speicherst Du denn einen Wert in einer privaten Variablen? Da ist in Deinem Quelltext nichts zu finden.
In Delphi sehen Getter und Setter so aus:
Delphi-Quellcode:
function TMagnetic.GetSnapWidth: Integer;
begin
  Result := FSnapWidth;
end;

procedure TMagnetic.SetSnapWidth(const Value: Integer);
begin
  FSnapWidth := Value;
end;
Zusätzlich wird unter private ein Feld FSnapWidth angelegt, in dem die Werte dann gespeichert werden.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#24

Re: Übersetzung Class MagneticWindow

  Alt 10. Okt 2006, 17:38
So gehts !

Delphi-Quellcode:
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;
Danke.

Gruß
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#25

Re: Übersetzung Class MagneticWindow

  Alt 10. Okt 2006, 17:45
Zitat von xaromz:
Hallo,
Zitat von EWeiss:
und in der Public Variablen m_lSnapWidth gespeichert.
Über 'Get SnapWidth' kann ich die Variable abfragen welchen aktuellen wert sie hat.

Klappt in VB !
Das klappt auch wunderbar in Delphi. Aber wo speicherst Du denn einen Wert in einer privaten Variablen? Da ist in Deinem Quelltext nichts zu finden.
In Delphi sehen Getter und Setter so aus:
Delphi-Quellcode:
function TMagnetic.GetSnapWidth: Integer;
begin
  Result := FSnapWidth;
end;

procedure TMagnetic.SetSnapWidth(const Value: Integer);
begin
  FSnapWidth := Value;
end;
Zusätzlich wird unter private ein Feld FSnapWidth angelegt, in dem die Werte dann gespeichert werden.

Gruß
xaromz
Eine Frage nur zum verständnis!
Warum wird dann in der procedure nicht auch GetSnapWidth übergeben
property SnapWidth: Integer read GetSnapWidth write SetSnapWidth; anstatt
property SnapWidth: Integer read FSnapWidth write SetSnapWidth; GetSnapWidth wird dann doch nirgends aufgerufen oder?

gruß
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#26

Re: Übersetzung Class MagneticWindow

  Alt 10. Okt 2006, 17:49
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.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#27

Re: Übersetzung Class MagneticWindow

  Alt 10. Okt 2006, 18:55
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:
    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';
gruß
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#28

Re: Übersetzung Class MagneticWindow

  Alt 10. Okt 2006, 19:12
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 www.delphibasics.co.uk oder vllt das OO-Turial von [user]Luckie[user].
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.

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"
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#29

Re: Übersetzung Class MagneticWindow

  Alt 10. Okt 2006, 19:33
Zitat:
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.
Ja ich weiß das du im grunde recht hast!
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!

Zitat:
Order einfach die Tatsache, dass ein Stringliteral in Delphi max. 255 Zeichen lang ist.
Jo .. gibt aber immer eine möglichkeit dem aus dem wege zugehen auf die eine oder andere art.

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ß
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#30

Re: Übersetzung Class MagneticWindow

  Alt 10. Okt 2006, 19:42
Zitat von EWeiss:
Zitat:
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.
Ja ich weiß das du im grunde recht hast!
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.
Nunja, die meisten, die sich auf die Art etwas beibringen, können danach nur das was sie brauchten um X in Delphi umzusetzen. Und das auch noch direkt, ohne eine andere Implementierung erwägen zu können, auf die man erst kommt wenn man die Sprache fließend spricht. Wie gesagt, deine VB-Vorgeschichte wird es dir definitiv nicht einfacher machen, ich glaube eher noch schwerer als wenn du noch nie vorher programmiert hättest. Aber nunja, mein Urteil mag da von meiner unheilbar chronischen Allergie gegen VB und diejenigen, die es tatsächlich benutzen, etwas beeinflusst werden.
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.
Zitat:
Aber grundsätzlich gebe ich dir Recht!
Zitat:
Zitat:
Order einfach die Tatsache, dass ein Stringliteral in Delphi max. 255 Zeichen lang ist.
Jo .. gibt aber immer eine möglichkeit dem aus dem wege zugehen auf die eine oder andere art.
Nicht wirklich, ein Stringliteral ist nunmal max. 255 Zeichen groß.
Was du oben gemacht hast ist einen String aus mehren Literalen zusammenzusetzen, die < 255 sind.

Zitat:
EDIT:So unterschiedlich von der Syntax her ist VB/Delphi nun auch wieder nicht!
Aber das was in dem Binary landet bzw. zur Laufzeit passiert hat dem, was in einem interpretierten Skript passiert nichts bis überhaupt nichts zu tun. Das meinte ich mit "Ähnlichkeiten sind eher zufällig".
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 12     123 45     Letzte »    


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 20:10 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