Как преобразовать формы DFM Delphi из двоичного формата в текстовый формат с помощью C#?Delphi Form (DFM) To Text
ответ
Лучший способ, вероятно, позвонить CONVERT.EXE
, приложение командной строки, включенное в состав Delphi. Here's an example in Delphi. Вы можете сделать то же самое в C#.
Я использую эти четыре метода, чтобы проверить формат файла DFM и преобразовать следующим образом: двоичный файл DFM
function IsDFMStreamBinary(AStream: TMemoryStream): Boolean;
{ Returns true if dfm file is in a binary format }
var
F: TMemoryStream;
B: byte;
begin
B := 0;
F := TMemoryStream.Create;
F.LoadFromStream(AStream);
try
F.read(B, 1);
Result := B = $FF;
finally
F.Free;
end;
end;
function DfmFile2Stream(const ASrc: string; ADest: TStream): Boolean;
{ Save dfm to stream }
var
SrcS: TFileStream;
begin
SrcS := TFileStream.Create(ASrc, fmOpenRead or fmShareDenyWrite);
try
ObjectResourceToText(SrcS, ADest);
Result := True;
finally
SrcS.Free;
end;
end;
procedure Txt2DFM(ASrc, ADest: string);
{ Convert Text to DFM }
var
SrcS, DestS: TFileStream;
begin
SrcS := TFileStream.Create(ASrc, fmOpenRead);
DestS := TFileStream.Create(ADest, fmCreate);
try
ObjectTextToResource(SrcS, DestS);
finally
SrcS.Free;
DestS.Free;
end;
end;
function Dfm2Txt(const ASrc, ADest: string): boolean;
{ Convert a binary DFM to text }
var
ASrcS, ADestS: TFileStream;
begin
ASrcS := TFileStream.Create(ASrc, fmOpenRead);
ADestS := TFileStream.Create(ADest, fmCreate);
try
ObjectResourceToText(ASrcS, ADestS);
Result := True;
finally
ASrcS.Free;
ADestS.Free;
end;
end;
Я проголосовал бы за это, если бы вы не проигнорировали часть вопроса «от C#». –
Спасибо, но мне нужен код C# не Delphi – Lennie
А Делфи после всего двоичном представлении объекта.
Правильный способ выполнения задания - написать эгоистичную утилиту командной строки C# (больше не нужно никакой внешней зависимости), основываясь на знании формата самого двоичного файла DFM.
Если формат не раскрывается, делая обращенную инженерию должно быть выполнимо:
- ObjectResourceToText исходный код доступен (classes.pas).
- Конвертеры (из двоичного текста в текст и наоборот) для генерации ввода, требуемого от инструментов, также доступны.
Вопрос более чем адекватно ответил за год до вашего комментария, что он добавляет? – RichardTheKiwi
- 1. Delphi DFM checker
- 2. Delphi dfm bad компилятор
- 3. Что означает контекстное меню Text DFM?
- 4. ASP Form to Text file
- 5. Delphi SAPI Text-To-Speech
- 6. html append text value to form action
- 7. Cant acces to form label text
- 8. Convert All mysql Text to ascii form
- 9. Delphi enable and disable click to form
- 10. Файлы Delphi 7 и .dfm отображают формы?
- 11. источник compatibilty (* .pas & * .dfm) по версиям Delphi
- 12. Поиск файла DFM с использованием Delphi IDE
- 13. Delphi Form Flickering
- 14. Text Prompt Delphi XE7
- 15. Где я могу найти компонент Text-to-Speech для delphi?
- 16. Delphi XE6 Firemonkey Form
- 17. Delphi Form Drag Lockup
- 18. Delphi fmx resize form
- 19. Delphi - FMX Form BUG?
- 20. Delphi resizable bsDialog Form?
- 21. Delphi Popup Window/Form
- 22. CodeIgniter Array Text Form Form Validation
- 23. Delphi OpenOffice automatic scalc center text text
- 24. Wtforms form field text enlargement
- 25. Delphi Form в DLL работает, но Delphi Frame - не
- 26. Delphi: как заблокировать dfm-s, чтобы не меняться ...?
- 27. Изменить ресурс Delphi DFM, чтобы закрыть его показ?
- 28. Требуется ли Delphi dfm во время компиляции, когда присутствует dcu?
- 29. Имейте представление структуры «прилипать» к DFM в Delphi XE?
- 30. Странный [число] s в файлах DFM Delphi - происхождение и необходимость?
Совет. Свяжите тип файла * .DFM с CONVERT.EXE. Таким образом, вы можете выбрать несколько DFM-файлов в проводнике и выбрать «Open with Convert» в контекстном меню. –