Soyez le premier à donner votre avis sur cette source.
Vue 8 020 fois - Téléchargée 560 fois
//********Notre Procedure de conversation modifier //********Origine http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_20438223.htm procedure HexStr2Bmp(Astring:Ansistring); var BmpStream: TMemoryStream; Bmp1: TBitmap; i: Integer; Mystr:string; begin showmessage('Size: '+floattostr((Length(Astring)/2))+' Octs'); if Length(Astring) mod 2 <> 0 then //**on teste si c'est une valide bitmap Begin //** (if is a valide Hex Code bitmap)****** ShowMessage('Not Even'); Exit; end; BmpStream := TMemoryStream.Create; //******on calcule le volume de notre stream (Stream size fom length code) BmpStream.Size := Length(Astring) div 2; for i := 0 to (Length(Astring) div 2)-1 do begin mystr:=Copy(Astring,((i+1)*2)-1,2); mystr:=trim(Mystr); //****assigne our byte in stream (on ajout nos byte calculer au steam) PByteArray(BmpStream.Memory)[i] := StrToInt('$'+Mystr); end; //**Revenir au debut de stream BmpStream.Position:=0; //form1.edit1.text := IntToHex(PByteArray(BmpStream.Memory)[0],2); // ça vous donne 42=debut bitmap correct car 42,4D=B M try Bmp1 := TBitmap.Create; BmpStream.Position := 0; Bmp1.LoadFromStream(BmpStream); FDFMREADER.Image1.canvas.Draw(0,0,Bmp1); bmp1.SaveToFile('temps1.bmp'); finally Bmp1.Free; BmpStream.Free; end; //************************************** procedure TFDFMREADER.ReadDFM(Filenamee:string); label 1; Var ReadString:TStringList; linee,wordd:string; I, Llength:integer; texte:Ansistring; begin //****je vai pas parler de creation car tous le monde vas le savoir un jour ReadString:=TStringList.create; //******************************************** ReadString.LoadFromFile(filenamee); pb1.Max:=ReadString.Count; i:=0; //*****on vas chercher notre "Picture.Data = { " ou se trouve le Block de donnée de bitmap //*****search "Picture.Data = { " the Block of bitmap hex code while (i < ReadString.Count-1) do begin inc(i) ; wordd:=''; linee:=readstring[i]; linee:=trim(linee); wordd:=copy(linee,0,7); if lowercase(wordd)='picture' then while (linee <> 'end') do begin inc(i); //**********to be freeeeeeeee********* application.ProcessMessages; linee:=readstring[i]; linee:=trim(linee); Llength:=length(linee); //****"{" it mean the end of Block data" if copy(linee,Llength,1)='}' then begin linee:=copy(linee,0,Llength-1) ; memo1.Lines.Add(linee); pb1.Position:=i; goto 1; end else memo1.Lines.Add(linee); pb1.Position:=i; end; end; 1: begin texte:=''; Edit1.Text:=copy(memo1.lines.Text,24,24); memo1.Lines.Text:=copy(memo1.lines.Text,25,length(memo1.Lines.Text)); //******** HEX CODE saint*****clean our result********* for i:=0 to memo1.Lines.Count-1 do texte:=texte+trim(memo1.Lines.Strings[i]); HexStr2Bmp(texte); //**********Here the Procedure************ end; end;
bon courage.
Seriesement vous ete tous Aveugles, Lire SVP La conclusion.
//*********Conclusion**********
tous personne désire de faire un composant pour charger des fichier sans utiliser les ressources RES DCR de delphi directemnt dans votre Exécutable pour faire des installers par exemple, c le moment de la même façon que Delphi enregistre les donnée de bitmap dans un fichier ASCII (.DFM) .
//****************************************************
ce que je voulais dire c'est : qu'on peut stocker des donnée binaire en format ASCII et les récupérer qu'on ton veux,
j'explique:
on peut converire un fichier binaire en code ASCII puis le charger dans une variable; un Widestring par exemple, comme ça le fichier et dans votre executaple, bien sure vous allez ajouté le nom et l'extention du fichier ainsi vous pouvez crypter et compressés vos données, et quand vous avez besoin, vous récupérez votre fichier vous n'avez qu'a renversez la procedure.
c'été ça le but, Personnelement ça marche chez moi nikel, j'éssay just de compréssé mes donnée car la taille du fichier an code ASCII se double c normale, c le resultat de conversation.
personnellement quand j'ai vue tous le code de mon ami et apré que j'ai pue comprendre comment le delphi manipule les Fichier source DFM ça ma venu cette idée, chui pas bornée moi!! les Raws Scoket, Blocked no Blocked socket, AVR ARM, thread, Classe, composant, ASM ^point, checksum, GPR Protocol, TStringstream, array of byte, Ortographe, les petit code de gens ...
ça ne me dit rien tous ça,
mais quoi faire avec !! ça , peut m'occupe, j'espère que je me suis fais comprendre, il faut avoir l'esprit un peut vaste.
Et pour mon voisin @nethacker, c vrai ce que ta dit , mais pour se que tu suggérais c possible, pour le moment je ne peut le faire qu'avec RemObject c a dire exécuté un script en runtime pour me facilté la tâche et pas vraiment complètement, car il faut connaitre tous le syntaxe de fichier DFM pour evitez les surprises d'un propreité ou évènement inattendue ;), car le delphi ne copie pas batement les proprité des composant en string, c un peut plus que ça.
Finalement les Mecs c un plaisir de changé des idées avec vous,c la seul chose qui me tien a posté des sources ici ;).
ca serait bien si ta source affiche une form à partir d'un dfm ! voir même concevoir !
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.