AGB  ·  Datenschutz  ·  Impressum  







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

Klassen, Vererbung und CAST

Ein Thema von bernhard_LA · begonnen am 12. Nov 2024 · letzter Beitrag vom 22. Nov 2024
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von gubbe
gubbe

Registriert seit: 8. Okt 2005
Ort: Schleswig-Holstein
137 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Klassen, Vererbung und CAST

  Alt 14. Nov 2024, 09:58
Überprüfe doch einfach mal die Reihenfolge des per uses eingebundenen Units.
Wenn Du schon oben explizit "VCL.Graphics.TBitMap" angeben musst, dann steht im interface Abschnitt wahrscheinlich

Uses VCL.graphics, WinApi.Windows

Vertausche das und dann solltest Du auch überall das gleiche TBitmap haben.
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Klassen, Vererbung und CAST

  Alt 20. Nov 2024, 13:06
wie müsste ich meine code erweitern damit
Zitat:
FImage.FDIB.dsBm
angelegt wird ?



Delphi-Quellcode:
procedure TBitMapExtension.LoadFromFile(const Filename: String);
var
  flag: bool;
begin

  /// .... für alle unterschiedlichen Grafiktypen

  if (Lowercase(ExtractFileExt(Filename)) = '.jpeg') then
  begin
    LoadJPEG(self, Filename);
    flag := TRUE;
  end;

end;


procedure LoadJPEG(Bmp: TBitMap; Filename: string);
var
  JPEG: TJPEGImage;

begin
  JPEG := TJPEGImage.Create;
  try
    JPEG.LoadFromFile(Filename);

    with Bmp do
    begin

      PixelFormat := pf16bit;
      // Width := jpeg.Width;
      // Height := jpeg.Height;

      Assign(JPEG);

      // PixelFormat := pf24bit;

    end;

  finally
    JPEG.Free;
  end;

end;
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Klassen, Vererbung und CAST

  Alt 22. Nov 2024, 09:57
Die Parameter Übergabe mit Procedure ProcessThisBitmap ( abmp as TBitmap) liefert bei mir folgenden Fehler :

Zitat:
[dcc64 Error] Unit_Testcases.pas(646): E2015 Operator not applicable to this operand type

auch der Versuch die Höhe / Weite nochmals expliziert zu setzen liefert keine Verbesserung- Beim Zugriff auf .width oder .height bekomme ich eine Zugriffsverletzung in der Unterrutine.
Der Aufruf von .width .height innerhalb des Codeblocks der Definition der Variablen funktioniert problemlos



Delphi-Quellcode:
procedure LoadJPEG(Bmp: TBitMap; Filename: string);
var
  JPEG: TJPEGImage;

begin
  JPEG := TJPEGImage.Create;
  try
    JPEG.LoadFromFile(Filename);

    with Bmp do
    begin

      PixelFormat := pf16bit;
      // Width := jpeg.Width;
      // Height := jpeg.Height;


      BMP.SetSize(jpeg.Width,jpeg.Height);

      Assign(JPEG);

      // PixelFormat := pf24bit;

    end;

  finally
    JPEG.Free;
  end;

end;

Geändert von bernhard_LA (22. Nov 2024 um 10:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von gubbe
gubbe

Registriert seit: 8. Okt 2005
Ort: Schleswig-Holstein
137 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Klassen, Vererbung und CAST

  Alt 22. Nov 2024, 10:05
Wenn Du jetzt schon wieder Probleme mit dem Typ von TBitmap hast, solltest Du vielleicht erst mal unsere Hinweise dazu lesen. Ich kann nicht erkennen, dass dies gelöst ist. Statt dessen stellst Du neue Fragen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#15

AW: Klassen, Vererbung und CAST

  Alt 22. Nov 2024, 10:09
Ich verstehe auch nicht, was Du da tust. Wie wäre es denn hiermit?
Delphi-Quellcode:
type
  TBitmapHelper = class helper for Vcl.Graphics.TBitmap
    procedure LoadJPEG(Filename: string);
  end;

...

implementation

{$R *.dfm}

uses jpeg;

{ TBitmapHelper }

procedure TBitmapHelper.LoadJPEG(Filename: string);
var
  lJPG: TJPEGImage;
begin
  lJPG := TJPEGImage.Create;
  try
    lJPG.LoadFromFile(Filename);
    Assign(lJPG);
  finally
    lJPG.Free;
  end;
end;

// Benutzung:
procedure TFormDingens.MachWas;
var
  lBMP: TBitmap;
begin
  lBMP := TBitmap.Create;
  try
    lBMP.LoadJPEG(JPEGFilename);
    lBMP.SaveToFile(BMPFilename);
  finally
    lBMP.Free;
  end;
end;
[edit] Benutzungsbeispiel ergänzt [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (22. Nov 2024 um 10:13 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:46 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