Autor |
Beitrag |
littlemike1005
      
Beiträge: 187
|
Verfasst: Sa 02.11.02 21:15
wie lese ich eine bitmap (bmp datei) in einen string ein???
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Sa 02.11.02 21:37
Versuch es mal so:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function Bmp2Str(FileName:string):string; var x:Textfile; str:string; begin AssignFile(x,Filename); Reset(x); Result:=''; while not eof(x) do begin ReadLn(x,str); Result:=Result+str; end; CloseFile(x); end; |
Das dürfte zwar nicht klappen, aber mit ein bisschen Erfindergeist könnte es gelingen...
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Sa 02.11.02 22:20
@littlemike1005
Was versuchst du? Wenns mit einem Beirtag nicht klappt, dann ein zweiter?
Es gibt nichts fertiges in Delphi, du mußt es schon selbst programmieren.
Such mal im Internet nach Units die sich mit Uuencode und Base 64 Kodierung beschäftigen.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 03.11.02 04:08
Ich habe davon echt nicht viel Ahnung. Aber mein Gefühl als Programmierer sagt mir, dass das wohl nicht viel Sinn machen dürfte ein Bitmap in einen String einzulesen. Wenn dann würde ich es in einen Memory-Stream oder so was einlesen.
|
|
Raphael82
      
Beiträge: 67
|
Verfasst: So 03.11.02 13:04
Streams, Blockread, Blockwrite, wenn du dich damit auseinandersetzt geht es. Es gibt auch Komponenten, die einem die Arbeit abnehmen. Musst halt einfach mal suchen.
(ReadLn und das Öffnen als Textdatei solltest du besser erst gar nicht versuchen, es geht nicht..)
Raphael
_________________ Share your knowledge to receive perfection!
|
|
littlemike1005 
      
Beiträge: 187
|
Verfasst: Mo 04.11.02 00:11
Titel: @Textdatei
Jo das mit der Textdatei musste ich auch feststellen.
Ich such mal nach lösungen.
Aber denke erst mal an alle
|
|
littlemike1005 
      
Beiträge: 187
|
Verfasst: Mo 04.11.02 00:24
Titel: @Raphael82
ja eingelesen und mit blockwrite in eine andere datei das geht.
aber ich will die bitmap in einen string haben. das scheitert immer. nach den ersten 3 zeichn (BM¶) dann ist ende
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 04.11.02 02:16
Du siehst doch, dass es nicht geht. Also mußt du es anderst machen.
Was willst du mit dem Bitmap in dem String eigentlich?
|
|
littlemike1005 
      
Beiträge: 187
|
Verfasst: Mo 04.11.02 02:38
Titel: MEMO oder STRING
Ich brauch das Bild entweder im string oder im memo feld
wenn ich den editor von windows benutze öffnet er mir die datei super schnell und es ist auch alles da wenn ich speichern unter benutze um das bild in eine andere datei zu verfrachten.
ich will das bild mit der fastnet kompo zu einem anderen rechner senden. mit text kein problem nur bilder.
ok gebe es ja zu ist nicht so ganz üblich.
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Mo 04.11.02 03:01
Doch, das ist sogar sehr üblich. Ich hab dir bereits oben den Tipp mit der Kodierung gegeben, aber du hackst nicht nach ob es dich interessiert. Üblich bei der Verschickung ist das Uuencode Format (7Bit). Da mußt du dich aber damit beschäftigen und das Format studieren.
Du hast wahrschinlich deine Binärdatei in 7 Bit Teilchen zerteilt. Sieben Bit macht 127 Ascii Zeichen und darunter einige Steuerzeichen. Dein Problem mit dem BM¶ ist, daß anscheinend an der vierten Stelle ein Ascii Null ist. Memo glaubt, daß es ein nullterminierter Sting ist und schneidet den Rest ab. Im String ist der Rest aber weiterhin da. Allerdings wette ich mit dir, daß auch der Rest einige Steuerzeichen hat und einige davon kommen ducht das Mailsystem nicht durch.
Die einfachste und schnellste Möglichkeit ist deshalb die 6 Bit Kodierung. Dadurch wird die Datei zwar um 1/8 größer, dafür ist es aber schnell gemacht.
zuerst eine Konstante mit 64 Zeichen erstellen, z.B.
const
code = '+/0123456789abcdefghijklmnopqrstunwxyzABCDEFG...
Dann zerteilst du mit BlockRead deinen Binärstring in 6 Bit Teilchen. Sechs Bit ergeben eine Maximalzahl von 63. Jetzt kannst du jeder Zahl einen Buchstaben zuordnen
Bildstring := Bildstring + code[Zahl + 1];
Wobei Zahl der Wert ist der mit BlockRead gelesen wurde.
Zurück geht es genauso, nur in andere Richtung.
Das ganze ist Arbeit für ein Abend.
Meinen Popcoder hab ich auch so gemacht. Hättest du schon beim letzten Postig haben können. Aber du fragst nicht nach und stellest eine neue Frage.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 04.11.02 03:01
Eventuell ist das die Lösung:
www.delphi-treff.de/...urs/index.php4?kat=5
Also das Bitamp als String zu versenden ist es bestimmt nicht.
|
|
littlemike1005 
      
Beiträge: 187
|
Verfasst: Mo 04.11.02 15:28
Titel: DANKE
OK Luckie!!!
Danke das Du danch geschaut hast ich werde es mal versuchen aber vor Freitag werde ich nicht dazu kommen. Ich melde mich hier im Forum ab noch mal ob es gefunzt hat.
DANKE
|
|