Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   absolute Sender (https://www.delphipraxis.net/182914-absolute-sender.html)

Bjoerk 26. Nov 2014 12:35

absolute Sender
 
Kann Jemand was mit dieser (Directive ?) anfangen?
Delphi-Quellcode:
procedure TSimpleImportForm.ImportViewPortBegin(Sender: TObject);
var
  V: TsgDXFViewPort absolute Sender;
  S: string;
begin
  S := 'Rect:'
    + sLineBreak + '  Left= ' + FloatToStr(V.Rect.Left)
    + sLineBreak + '  Top= ' + FloatToStr(V.Rect.Top)
    + sLineBreak + '  Z1= ' + FloatToStr(V.Rect.Z1)
    + sLineBreak + '  Right= ' + FloatToStr(V.Rect.Right)
    + sLineBreak + '  Bottom= ' + FloatToStr(V.Rect.Bottom)
    + sLineBreak + '  Z2= ' + FloatToStr(V.Rect.Z2);
  S := S + sLineBreak + '---ENTITIES below are displayed in this VIEWPORT---';
  FTextFile.Add(S);
end;

Union 26. Nov 2014 12:36

AW: absolute Sender
 
Damit wird definert, dass V auf die selbe Speicheradresse zeigt wie Sender. Eine besonders fiese Art eines harten typecast.

DeddyH 26. Nov 2014 12:37

AW: absolute Sender
 
http://www.delphipraxis.net/98080-sc...-absolute.html

Neutral General 26. Nov 2014 12:37

AW: absolute Sender
 
Das bedeutet dass V auf Sender zeigt.

Es ist quasi ein

Delphi-Quellcode:
V := TsgDXFViewPort(Sender);
innerhalb der Deklaration von V.

himitsu 26. Nov 2014 12:42

AW: absolute Sender
 
Ich würde ja mal in die OH gucken. :roll:

Delphi-Quellcode:
procedure TSimpleImportForm.ImportViewPortBegin(Sender: TObject);
var
  V: TsgDXFViewPort absolute Sender;
begin

Delphi-Quellcode:
procedure TSimpleImportForm.ImportViewPortBegin(Sender: TObject);
var
  V: TsgDXFViewPort;
begin
  V := TsgDXFViewPort(Sender);

Bjoerk 26. Nov 2014 12:50

AW: absolute Sender
 
Ok. Thanx. Sorry. Der Code steckt übrigens voll mit solchen (üblen) Sachen? Wo soll man z.B. hier einen try finally Block unterbringen? Und was soll das klein v mir sagen?
Delphi-Quellcode:
    case StrIndex(vFileExt, Exts) of
      0: sgCADImage := TsgCADdxfImage.Create;
      1: sgCADImage := TsgDWGImage.Create;
      2..15: sgCADImage := TsgHPGLImage.Create;
      16: sgCADImage := TsgSVGImage.Create;
      17: sgCADImage := TsgCGMImage.Create;
    end;

Union 26. Nov 2014 12:52

AW: absolute Sender
 
v wird hier wahrscheinlich als Präfix für lokale Variablen verwendet. Andere verwenden L.

himitsu 26. Nov 2014 14:17

AW: absolute Sender
 
Oder es kommt vom TsgDXFViewPort :stupid:


Zitat:

Delphi-Quellcode:
    case StrIndex(vFileExt, Exts) of
      0: sgCADImage := TsgCADdxfImage.Create;
      1: sgCADImage := TsgDWGImage.Create;
      2..15: sgCADImage := TsgHPGLImage.Create;
      16: sgCADImage := TsgSVGImage.Create;
      17: sgCADImage := TsgCGMImage.Create;
    end;

Was passiert, wenn die Dateiendung nicht gefunden wird?

Da nur Creates in dem CASE sind, dann das Try direkt danach beginnen,
oder man erstellt hier nicht, sondern speichert den Typ nur in einer Klassen-Variable (TClass)
und macht das Erstellen über MyImageClass.Create und Try-Finally dann danach.

Bjoerk 26. Nov 2014 15:16

AW: absolute Sender
 
Das wird vorher abgefangen (Ist ein mitgeliefertes Beispiel der Autoren um die erweiterte TGraphic zu demonstrieren). Bei den Beispielen hatten sie wohl keinen Bock mehr? Union lag da richtig, ist hier ne lokale Variable. Ich kannte halt nur klein L wie es z.B. [Sir] Rufo [/Sir] oft verwendet. :)

Aphton 27. Nov 2014 09:08

AW: absolute Sender
 
Absolute hat einen ganz praktischen Nutzen:

Delphi-Quellcode:

procedure foo(rgb: DWord);
var
  rgb_arr: Array[0..3] of Byte absolute rgb;
begin
  showmessage('Rotanteil : ' + IntToStr(rgb_arr[0]));
  showmessage('Grünanteil: ' + IntToStr(rgb_arr[1]));
  showmessage('Blauanteil: ' + IntToStr(rgb_arr[2]));
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 Uhr.
Seite 1 von 2  1 2      

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