Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];




Вниз

Можно ли перевести *.DFM (D6) в *.DFM (D5) ???? 


stikr   (2002-03-06 10:33) [0]

Можно ли перевести *.DFM (D6) в *.DFM (D5) ????



drpass   (2002-03-06 10:58) [1]

А что, формат DFM-файлов стал чем-то отличаться? Он не изменился со времен первой версии Delphi и прекрасно переносится между версиями. Единственная загвоздка - в D5 и D6 есть опция "Сохранять DFM в текстовом виде", которая по умолчанию включена, и из-за этого форма может не читаться более ранними версиями. Но между D6 и D5 проблем с переносом нет.



McSimm   (2002-03-06 11:23) [2]

>drpass © (06.03.02 10:58)
Заблуждаетесь. В формах строковые значения Delpi6 записывает в Unicode формате. Это не позволяет открыть ее предыдущей версией



stikr   (2002-03-06 12:34) [3]

Отлично, но ероме Unicode в DFM Delpi6 есть определенная избыточность данных не понимаемая Delpi5.
Какие всетаки будут предложения по решению этой проблемки...
пока в голову приходит сесть и перебить все ручками но затрудняюсь в расчетах необходимого на это времени... (12 форм насыщенных русской текстовкой)



Alx2   (2002-03-06 12:39) [4]

Сталкивался с этим. Просто заменял Unicode на "нормальный" текст. А избыточность не повстречал :(
Когда Delphi 5.0 ругалась, просто жал "игнорировать"



stikr   (2002-03-06 12:43) [5]

Как в таком случае автоматизировать процесс а то имею порядка 3000 строк вида:

Caption = #1048#1085#1092#1086#1088#1084#1072#1094#1080#1103



Alx2   (2002-03-06 12:43) [6]

Если интересно, вот код:

Procedure TForm1.Button1Click(Sender: TObject);
Function isChanges(Const S: String; Var Res: String): Boolean;
Var len: Integer;
Function LexemSharp(Var K: Integer): Boolean;
Begin
Result := (K < len) And (S[K] = "#");
If Result Then
Begin
inc(K);
While (K <= len) And (S[K] In ["0".."9"]) Do inc(K);
End;
End;
Function LexemAp(Var K: Integer): Boolean;
Begin
Result := (K < len) And (S[K] = """");
If Result Then
Begin
inc(K);
While (K <= len) And (S[K] <> """") Do inc(K);
If K <= len
Then
inc(K);
End;
End;

Function Lexem(Var K: Integer; Var Str: String): Boolean;
Var
Start: Integer;
ValS : String;
Begin
Result := False;
Start := K;
If LexemSharp(K) Then
Begin
ValS := Copy(S, Start+1, K - Start-1);
Str := WideChar(StrToInt(ValS));
Result := True;
End
Else
If LexemAp(K) Then
Begin
Str := Copy(S, Start + 1, K - Start - 2);
Result := True;
End;
End;

Function Prepare(Var K: Integer): String;
Var Str: String;
Begin
Result := "";
While Lexem(K, Str) Do
Result := Result + Str;
If Result <> "" Then
Result := """" + Result + """" + Copy(S, K, Length(S))
Else Result := S;
End;
function min(a,b : integer):integer ;
begin
if a=0 then Result := b
else
if b=0 then Result := a
else
if a>b then result := b
else result := a;
end;

Var
StartIdx: Integer;
Begin
Result := False;
StartIdx := min(Pos("#", S),pos("""",S));
If StartIdx > 0 Then
Begin
len := Length(S);
While (StartIdx <= len) And (Not (S[StartIdx] In ["#", """"])) Do inc(StartIdx);
If StartIdx < len Then
Begin
Res := Copy(S, 1, StartIdx - 1) + Prepare(StartIdx);
Result := True;
End;
End;
End;

Var
SList: TStringList;
K : Integer;
Res : String;
Begin
If OpenDialog1.Execute Then
Begin
SList := TStringList.Create;
Try
SList.LOADFROMFILE(OpenDialog1.Filename);
For K := 0 To SList.Count - 1 Do
If isChanges(SList[K], Res) Then
SList[K] := Res;
Finally
SList.SaveToFile(OpenDialog1.FileName); // Храним в тот же файл.
SList.Free;
End;
End;
End;



stikr   (2002-03-06 13:00) [7]

Огромное спасибо уже все сделал...



Alx2   (2002-03-06 13:05) [8]

>stikr (06.03.02 13:00)
Пока не приспичит не напишешь :))
Как Delphi 5.0 это сжевала? Интересно про "лишнее" в DFM узнать...



stikr   (2002-03-06 13:16) [9]

Без проблем, что касается избыточности как и советовали "просто жал "игнорировать"" и о чудо все как и было...




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.025 c
3-66727           Yephim                2002-02-20 09:52  2002.03.21  
Как через ADO подключится к текстовому файлу?


1-66890           firster               2002-02-27 08:19  2002.03.21  
Delphi & Builder


3-66770           Demon ltd             2002-02-21 23:26  2002.03.21  
Присваивание из базы


1-66918           None                  2002-03-05 11:29  2002.03.21  
Рисование поверх всех компонент.


3-66740           Maratik               2002-02-20 18:49  2002.03.21  
Программное создание поля в dBase.