Entwickler-Ecke
Sonstiges (Delphi) - Ein BitMap in ein Memo laden
patmann2001 - Mo 19.08.02 12:26
Titel: Ein BitMap in ein Memo laden
Hallo
Wenn ich unter Windows ein BitMap mit dem Editor öffnen bekomme ich den Inhalt in einem Textformat angezeigt.
Ich habe das jetzt auch mal mit einem Memo unter Delphi (4) versucht.
Quelltext
1:
| memo1.lines.loadfromfile('Bild.bmp'); |
Leider passiert dann nicht das selbe wie im Editor sondern es werden nur 4 Zeichen angezeigt
Wie bekomme ich es hin, das es aussieht wie im Editor :?:
cu Patmann
Ex0rzist - Mo 19.08.02 15:16
Hallo patmann2001,
ich habe es nicht ausprobiert, aber ich würde das Bild als HEX-Code einlesen und diesen dann im Memo ausgeben.
_________
Ex0rzist
MathiasH - Mo 19.08.02 20:10
@exorzist: wie wärs, wenn du ihm auch noch sagst, wie das gehen soll, da kann ich ihm leider auch nicht weiterhelfen, aber mit den Standard "Borland-Hausmitteln"(VCL) wirds wohl nicht mit einer Zeile QT möglich sein
MathiasH
Ex0rzist - Mo 19.08.02 20:42
@MathiasH:
Na gut, dann poste ich hier mal die entsprechende Unit.
Man benötigt:
1x TMemo
1x TButton
2x TLabel
1x TOpenDialog
Was macht das Programm? Es liest eine beliebige Datei ein und gibt den HEX-Code im Memo aus.
Es ist aber sehr langsam. Bitte nicht unbedingt mit Dateien >100kB testen.
Naja, es ist ja auch nur ein Grundgerüst.
Hier der Code:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; OpenDialog1: TOpenDialog; Memo1: TMemo; Label1: TLabel; Label2: TLabel; Button2: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen} public { Public-Deklarationen} end;
var Form1: TForm1;
implementation
{$R *.DFM}
type s2=string[2];
function HexToInt(s:S2):Integer; begin s:='0'+s; result:=strtoint('$'+s); end;
procedure TForm1.Button1Click(Sender: TObject); var f : file; buf : array[0..4096]of byte; k : string; acRead, i: integer; begin {$i-} if opendialog1.execute then begin Memo1.Clear; cursor:=crhourglass; AssignFile(f,opendialog1.filename); Reset(f,1); if(IoResult = 0) then begin repeat BlockRead(f, buf, sizeof(buf), acRead); if(acRead > 0) then for i := 0 to acRead do begin K := IntToHex(buf[i],2); Memo1.Text := Memo1.Text+K; Application.ProcessMessages; end; until(acRead = 0); Label2.Caption := IntToStr(FileSize(f))+' Bytes'; Form1.Caption := IntToStr(acReaD); CloseFile(f); label1.caption:=opendialog1.filename; cursor:=crDefault; end; end; {$I+} end;
end. |
___________
Ex0rzist
patmann2001 - Mi 21.08.02 09:28
Danke
Werde das mal ausprobieren.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!