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 6 von 12   « Erste     456 78     Letzte »    
xaromz

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

Re: Übersetzung Class MagneticWindow

  Alt 11. Okt 2006, 10:14
Hallo,

eine grundsätzliche Anmerkung habe ich noch. Du benutzt reichlich kryptische Variablennamen (m_uWndInfo ist so ein Beispiel). Wenn Du auch nach zwei Wochen noch verstehen willst, was Dein Programm macht, dann solltest Du Dir vielleicht aussagekräftigere Namen ausdenken. Diese sind dann automatisch Teil der Dokumentation des Programms, d. h. der Quellcode wird selbstbeschreibend. Und Unterstriche in Variablennamen sind in Delphi sowieso verpönt. Übrigens können wir Dir auch besser helfen, wenn wir verstehen, was Du da schreibst .

Hilfreich ist möglicherweise der Object Pascal Style Guide.

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

n/a Beiträge
 
#52

Re: Übersetzung Class MagneticWindow

  Alt 11. Okt 2006, 11:59
Wieso kryptisch? Ich habe (intuitiv) seine Variablen so verstanden:

- Wenn es ein Klassenmember ist, dann kommt vorne ein "m_" als Präfix vor.
- Dann folgt der Typ. So ist ein Boolean in einer Klasse deklariert: m_bXXX, ein Long und nicht als Member: lngXXX

Und der Name dahinter gibt den Inhalt an sich an, also die Bedeutung. Der Typ und Deklarationsort sind zuvor definiert. Was ist daran unklar? Ok, das mit dem Unterstrich. Grundlegend könnte ich an seinen bisherigen Benennungen nichts wirklich schlechtes vorwerfen - da gibt es genug andere Beispiel wo gar nichts in der Richtung gesagt wird.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#53

Re: Übersetzung Class MagneticWindow

  Alt 11. Okt 2006, 14:05
Zitat von Muetze1:
Wieso kryptisch? Ich habe (intuitiv) seine Variablen so verstanden:

- Wenn es ein Klassenmember ist, dann kommt vorne ein "m_" als Präfix vor.
- Dann folgt der Typ. So ist ein Boolean in einer Klasse deklariert: m_bXXX, ein Long und nicht als Member: lngXXX

Und der Name dahinter gibt den Inhalt an sich an, also die Bedeutung. Der Typ und Deklarationsort sind zuvor definiert. Was ist daran unklar? Ok, das mit dem Unterstrich. Grundlegend könnte ich an seinen bisherigen Benennungen nichts wirklich schlechtes vorwerfen - da gibt es genug andere Beispiel wo gar nichts in der Richtung gesagt wird.
absolut korrect.
Ich konnte im ersten moment die argumentation wegen der benennung
auch nicht nachvollziehen.

@xaromz
Habe aber nichts gegen einzuwenden ihn auf den Pascal Style zu konvertieren.
das könnte man zum schluss erledigen, wenn es komplett durchgelaufen ist.

gruß
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#54

Re: Übersetzung Class MagneticWindow

  Alt 11. Okt 2006, 14:11
Also so:
Delphi-Quellcode:
// Add info
m_uWndInfo[m_lWndCount -1].hwnd := Handle;
m_uWndInfo[m_lWndCount -1].hWndParent := hWndParent;
Gutes argument.
Werde es ändern.

Das verändern der Variablen(Namen) möchte ich erst in angriff wenn der erste Durchlauf
mal erfolgreich war.

Gruß
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#55

Re: Übersetzung Class MagneticWindow

  Alt 11. Okt 2006, 14:28
Altes aber dennoch neues Problem.

Gerate bei der Übergabe einer neuen SnapWidth in eine Endlosschleife.
Kann also irgendetwas mit der Property SnapWidth noch nicht stimmen.

Habe beide Varianten versucht.
    property SnapWidth: Integer read FSnapWidth write SetSnapWidth;     property SnapWidth: Integer read GetSnapWidth write SetSnapWidth; Die eine verursacht eine endlosschleife, die andere einen AV.

Hat sich erledigt!


gruß
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#56

Re: Übersetzung Class MagneticWindow

  Alt 11. Okt 2006, 16:18
Original
Code:
        'Convert the string from hex pairs to bytes and store in the machine code buffer
        i = 1
        Do While j < CODE_LEN
            j = j + 1
            sc_aBuf(j) = CByte("&H" & Mid$(sSubCode, i, 2)) 'Convert a pair of hex characters to an eight-bit value and store in the static code buffer array
            i = i + 2
        Loop                                               'Next pair of hex characters
Übersetzt.
Delphi-Quellcode:
        //Convert the string from hex pairs to bytes and store in the machine code buffer
        i := 1;
         While j < CODE_LEN Do
            inc(j);
            sc_aBuf[j] := byte(MidStr('$' + sSubCode, i, 2)); //Convert a pair of hex characters to an
                                                              //eight-bit value and store in the static code buffer array
            i := i + 2;
Delphi-Quellcode:
function MidStr(Const Str: String; From, Size: Word): String;
begin
  MidStr := Copy(Str, From, Size)
end;
Fehler!
Zitat:
[Pascal Error] Magnetic.pas(850): E2089 Invalid typecast
Wie kann ich den String MidStr('$' + sSubCode, i, 2); nach byte convertieren ?

gruß
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#57

Re: Übersetzung Class MagneticWindow

  Alt 11. Okt 2006, 17:01
1. wieder Result
2. Mit StrToInt() kannst du Zahlen in hexadezimaler Schreibweise konvertieren, wenn diese mit einer "$" eingeleitet werden. Sonst würde er sie in dezimaler Schreibweise konvertieren..
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#58

Re: Übersetzung Class MagneticWindow

  Alt 11. Okt 2006, 17:16
Zitat von Muetze1:
1. wieder Result
2. Mit StrToInt() kannst du Zahlen in hexadezimaler Schreibweise konvertieren, wenn diese mit einer "$" eingeleitet werden. Sonst würde er sie in dezimaler Schreibweise konvertieren..
Delphi-Quellcode:
function MidStr(Const Str: String; From, Size: Word): String;
begin
  Result := Copy(Str, From, Size)
end;
Ist gewohnheit muss mich dran gewöhnen das die rückgabe .. Result ist.

Delphi-Quellcode:
sc_aBuf : array [1..CODE_LEN] of Byte;
sc_aBuf[j] := Byte(StrToInt(MidStr('$' + sSubCode, i, 2)));
Wie oben schneidet er mit einen Wert vom string ab
Sollte '$55' sein gibt aber '$5' aus .AV
sc_aBuf[j] ist ein Array of byte.

So funktioniert das nicht.

gruß
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#59

Re: Übersetzung Class MagneticWindow

  Alt 11. Okt 2006, 17:55
Geht jetzt!
Waren ein paar probleme mit der Schleife.

Delphi-Quellcode:
        //Convert the string from hex pairs to bytes and store in the machine code buffer
        i := 1;
        j := 0;

         While j < CODE_LEN Do
          begin
            inc(j);
            sc_aBuf[j] := Byte(StrToInt('$' + MidStr(sSubCode, i, 2))); //Convert a pair of hex characters to an
                                                   //eight-bit value and store in the static code buffer array
            i := i + 2;
          end;
gruß
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#60

Re: Übersetzung Class MagneticWindow

  Alt 11. Okt 2006, 18:35
Habe die aktuelle Version noch mal hochgeladen.
Fehlte noch eine 'end else' abfrage in Subclass_Start.

Jetzt wird es mal wieder schwierig.

PATCH_0A = 186; //Address of the owner object zPatchVal(VarPtr(sc_aBuf(1)), PATCH_0A, ObjPtr(Me)) VarPtr ??? , ObjPtr ???

und

Delphi-Quellcode:
procedure TMagnetic.zPatchVal(nAddr: Integer; nOffset: Integer; nValue: Integer);
//Patch the machine code buffer at the indicated offset with the passed value
begin
    RtlMoveMemory(nAddr + nOffset, nValue, 4);
End;
RtlMoveMemory ???

Edit:
Scheint das gleiche wie CopyMemory zu sein!
Code:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (xDest As Any, xSource As Any, ByVal nbytes As Long)
gruß
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 12   « Erste     456 78     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 08:01 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