Форум: "Основная";
Текущий архив: 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]Без проблем, что касается избыточности как и советовали "просто жал "игнорировать"" и о чудо все как и было...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c