Delphi6開發的程序如何轉Delphi5 |
尚未結案
|
guohua_fu
一般會員 ![]() ![]() 發表:44 回覆:50 積分:18 註冊:2003-06-19 發送簡訊給我 |
|
ccchen
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|
ccchen
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
試試這個,沒在簡體中試過
function OpenDfmAsText(dfmname:string):TStringList; var fstream:TFileStream; txtStream:TMemoryStream; stype:TStreamOriginalFormat; pfmt:TParser; s:string; ws:WideString; p0,p1,p2:integer; function findstr(begpos:integer; substr,sstr:string):Integer; var ss:String; begin ss:=copy(sstr,begpos,length(sstr)-begpos 1); Result:=pos(substr,ss) begpos-1; end; begin result:=TStringList.Create; try fstream:=TFileStream.create(dfmname,fmOpenRead); txtstream:=TMemoryStream.create; fStream.Position:=0; stype:=TestStreamFormat(fStream); if stype=sofText then ObjectResourceToText(fStream,txtStream,stype) else ObjectResourceToText(fStream,txtStream); txtstream.Position:=0; try Result.LoadFromStream(txtStream); txtstream.Position:=0; pfmt:=TParser.create(txtStream); p0:=1; with pfmt do while NextToken <> toEof do begin if TOken=toWString then begin ws:=TokenWideString; s:=TokenString; p1:=findstr(p0,s,Result.text); p2:=p1 length(s); Result.text:=copy(Result.text,1,p1-1) #39 ws #39 copy(Result.text,p2,length(Result.text)-p2 1); p0:=p1 length(ws); // next finding position end; end; finally txtStream.Free; fstream.Free; end; except Result.free; Result:=nil; end; end; procedure TForm1.Button1Click(Sender: TObject); var l:TStringlist; begin l:=OpenDfmAsText('unit1.dfm'); //給任何dfm檔, 轉完後應該是AnsiString l.SaveToFile('xx.txt');//重save l.free; end;如果測試OK, savetofile可以直接Replace原檔, 別忘了先Backup, 否則壞了別怪我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |