Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#28

AW: Neuer Blog über FireMonkey Entwicklung eröffnet

  Alt 13. Feb 2014, 23:55
Die Funktionalität will ich deiner Umsetzung gar nicht absprechen, sie ist nur unschön.
  • WideString kann auch Unicode und ist somit in der Lage wirklich alle Dateinamen zu transportieren
  • MSDN-Library durchsuchenIStream ist ein Stream-Interface von Microsoft und hat nichts mit FMX oder VCL zu tun. Das Interface ist in Delphi-Referenz durchsuchenWinapi.ActiveX zu finden und mit einem Delphi-Referenz durchsuchenSystem.Classes.TStreamAdapter kannst du dir so einen IStream von einem normalen TStream holen.
Der ganze Aufruf sieht dann mit einem IStream so aus (die Rückgabe erfolgt im gleichen Stream ):
Delphi-Quellcode:
function ProcessBitmap( ABitmap : TBitmap ):Boolean
var
  LStream : TStream;
begin
  LStream := TMemoryStream.Create;
  try
    ABitmap.SaveToStream( LStream );
    if ShowBitmapFromStream( TStreamAdapter.Create( LStream, soReference ) ) then
    begin
      LStream.Seek( 0, soFromBeginning );
      ABitmap.LoadFromStream( LStream );
    end;
  finally
    LStream.Free;
  end;
end;
BTW:

Ich habe gerade die Vorlage für deinen Code entdeckt
http://blogs.embarcadero.com/stephen...l-application/

Nun ja, die Beispiele sind von denen halt auch nicht so der Brüller.

Und den Grund für die Rückgabe als Datei habe ich auch entdeckt (ein echter Schenkelklopfer):

FMX.Graphics.TBitmap.LoadFromStream analysiert den Stream und erkennt das Grafikformat - sehr löblich.

FMX.Graphics.TBitmap.SaveToStream speichert das Bild stumpf als PNG in den Stream
FMX.Graphics.TBitmap.SaveToFile speichert das Bild in dem Format ab, was von der Dateiendung erkannt wird.

Schaut man sich den Code von TBitmap.SaveToStream an, dann sieht man aber auch sofort, wie man das abändern kann
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (14. Feb 2014 um 00:15 Uhr)
  Mit Zitat antworten Zitat