![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перенос форм из Delphi 6 в Delphi 5
DPashin © (2002-05-28 10:25:00)Пытаюсь в D5 открыть форму, сохраненную в D6, выскакивает сообщение об ошибке.
Можно ли как-то сконверитровать форму, чтобы ее можно было использовать в D5?
DPashin (2002-05-29 09:48:00) [1]сэнкс
MBo (2002-05-28 13:06:00) [2]>Alx2
думаю, года три будет пользоваться спросом.
>пишется за 15 мин. если чтo
А округление до двух знаков пишется за 15 секунд, однако сам знаешь...
Alx2 (2002-05-28 12:50:00) [3]>MBo © (28.05.02 12:40)
Туда бы что-нибудь доброе, вечное... :))
А это через полгода никому не надо будет. Да и пишется за 15 мин. если что.
MBo (2002-05-28 12:40:00) [4]>Alx2
ты бы в UBPFD кинул - каждую неделю же спрашивают ;)
Alx2 (2002-05-28 12:14:00) [5]Вот так можно сконвертировать:
На форму кинь 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;
Владимир К (2002-05-28 11:55:00) [6]Форму можно сохранить как текст. Но помните, что есть новые компоненты.