Thema: Delphi 18bit Bilder erstellen??

Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#37

Re: 18bit Bilder erstellen??

  Alt 18. Nov 2005, 08:20
Hi,
ich glaub du hast die Bmp24ToBmp18-Funktion noch nicht richtig verstanden.
Du übergibst der Methode eine 24-Bit Bitmap und einen Pointer (der dann auf dein erzeugtes ByteArray zeigt) und da es nur ein Pointer ist, weißt du nicht wie groß die zurückgegebene Struktur ist. (Ok, liegt er daran dass sie mit GetMem oder so angelegt wird). Jedenfalls ist dein Rückgabewert die Größe dessen, was du bekommst.

Zitat von Simon6785:
Also ich habe mir diese Function gebaut um ein BIld aus der Firmware zu holen:
Delphi-Quellcode:
procedure TForm1.bildtauschen(offset:integer;groese:integer);
VAR bild:integer;
p : Pointer;
begin
bild:=Bmp24ToBmp18(image2.picture.bitmap,p);
cla := TFileStream.Create(pfad, fmOpenread);
cla.Position:=offset;
cla.write(bild,groese);
FreeAndNil(cla);
FreeMem(p);
end;
muss zu (oh, du solltest die Datei zum Schreiben öffnen, nicht zum lesen)

Delphi-Quellcode:
procedure TForm1.bildtauschen(offset : Integer);
VAR length : integer;
    p : Pointer;
begin
  length := Bmp24ToBmp18(image2.picture.bitmap,p);
  cla := TFileStream.Create(pfad, fmOpenWrite or fmShareExclusive);
  cla.Position := offset;
  cla.write(p, length); // hier bin ich mir nicht ganz sicher ob das so funktioniert
  // Alternativ
  // cla.write(TByteArray(p)[0], length); // mit TByteArray = Array of Byte
  FreeAndNil(cla);
  FreeMem(p);
end;
Gruß Der Unwissende
  Mit Zitat antworten Zitat