Форум: "Основная";
Текущий архив: 2002.06.10;
Скачать: [xml.tar.bz2];
ВнизПеренос форм из Delphi 6 в Delphi 5 Найти похожие ветки
← →
DPashin (2002-05-28 10:25) [0]Пытаюсь в D5 открыть форму, сохраненную в D6, выскакивает сообщение об ошибке.
Можно ли как-то сконверитровать форму, чтобы ее можно было использовать в D5?
← →
Владимир К (2002-05-28 11:55) [1]Форму можно сохранить как текст. Но помните, что есть новые компоненты.
← →
Alx2 (2002-05-28 12:14) [2]Вот так можно сконвертировать:
На форму кинь OpenDialog1 (удобнее будет, если включить у него в опциях multiselect) и Button1, на который повесь следующее:
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;
WasLexem: Boolean;
Begin
Result := "";
WasLexem := False;
While Lexem(K, Str) Do
Begin
Result := Result + Str;
WasLexem := True;
End;
If Result <> "" Then
Result :="""" + Result + """" + Copy(S, K, Length(S))
Else
If Not WasLexem Then
Result := S
Else
Result := """""";
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, L : Integer;
Res : String;
Begin
If OpenDialog1.Execute Then
Begin
For L := 0 To OpenDialog1.Files.Count - 1 Do
Begin
SList := TStringList.Create;
Try
SList.LOADFROMFILE(OpenDialog1.Files[L]);
For K := 0 To SList.Count - 1 Do
If isChanges(SList[K], Res) Then
SList[K] := Res;
Finally
SList.SaveToFile(OpenDialog1.Files[L]);
SList.Free;
End;
End;
End;
End;
← →
MBo (2002-05-28 12:40) [3]>Alx2
ты бы в UBPFD кинул - каждую неделю же спрашивают ;)
← →
Alx2 (2002-05-28 12:50) [4]>MBo © (28.05.02 12:40)
Туда бы что-нибудь доброе, вечное... :))
А это через полгода никому не надо будет. Да и пишется за 15 мин. если что.
← →
MBo (2002-05-28 13:06) [5]>Alx2
думаю, года три будет пользоваться спросом.
>пишется за 15 мин. если чтo
А округление до двух знаков пишется за 15 секунд, однако сам знаешь...
← →
DPashin (2002-05-29 09:48) [6]сэнкс
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.06.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c