![]() |
AW: Delphi Project Viewer 1.0
Zitat:
Delphi kann sie aber auch im Klartext anzeigen. Das für binäre Dateien zu implmentieren, wäre eine echte Herausforderung und ein erheblicher Mehrwert des Programmes, scheitert aber wohl daran, daß das Format nicht offengelegt wurde / ist. Man denke nur mal daran, wie schwer sich die Gemeinde freier Programmierer tat und tut, NTFS die Geheimnisse zu entlocken, zumal das immer weiter entwickelt wird. Soweit ich weiß, ist das Schreiben darauf bis heute nicht offiziell für zuverlässig erklärt worden. |
AW: Delphi Project Viewer 1.0
Binäres DFM lesen:
![]() Zitat:
Siehe Unit Classes -> procedure ObjectResourceToText. Der umgekehrte Weg geht natürlich auch. |
AW: Delphi Project Viewer 1.0
Das Format ist auch offen und recht einfach.
TReader, TWriter und der Rest versteckt sich in TComponent und TReader/TWriter, die Komponenten/Property-Schreib-/Lesefunktionen. Kann man gut nutzen, wenn man DFMs "manuell" einlesen will, um was zu suchen, oder weil der DFM-Loader alle Komponenten/Typen braucht, die nicht immer vorhanden sind. Den "Text" manuell zu parsen ist auch blöd, da ist es schöner sich das von TReader einlesen zu lassen. Ich hab TReader/TWriter auch schon selber für binäre Speicherformate verwendet, was gut für Abwärtskompatibilität ist, ähnlich zu XML kann man "unbekannte" Teile überspringen, da das Format sich selber kommentiert. Einkompilert wird auch immernoch die binäre Resource. (glaub ich) |
AW: Delphi Project Viewer 1.0
Eine Suchfunktion, die auch mit den in DFM Dateien auf mehrere Zeilen zerlegten Strings klar kommt, wäre ein echtes Alleinstellungsmerkmal (afaik).
In diesem Beispiel findet GExperts Grep Search zum Beispiel die topfblume nicht
Delphi-Quellcode:
object qryExample: TSimpleDataSet
DataSet.CommandText = 'select * from topf' + 'blume' ... |
AW: Delphi Project Viewer 1.0
Code:
Das will er nicht...
var fs: TFileStream;
ms: TMemoryStream; begin fs:=TFileStream.Create(fn, fmOpenRead); ms:=TMemoryStream.Create; try ObjectResourceToText(fs, ms); Form1.Memo1.Lines.LoadFromStream(ms); finally fs.Free; ms.Free; end; end; |
AW: Delphi Project Viewer 1.0
Warum nicht? Kommentarlos?
|
AW: Delphi Project Viewer 1.0
Memo bleibt leer. Keine Delphi Meldung. Unteres geht...
Code:
SrcS := TFileStream.Create(Src, fmOpenRead);
DestS := TFileStream.Create(Dest, fmCreate); try ObjectResourceToText(SrcS, DestS); if FileExists(Src) and FileExists(Dest) then Result := True else Result := False; finally SrcS.Free; DestS.Free; end; |
AW: Delphi Project Viewer 1.0
Bitte Quelltext marginal ändern:
Delphi-Quellcode:
var fs: TFileStream;
ms: TMemoryStream; begin fs:=TFileStream.Create(fn, fmOpenRead); ms:=TMemoryStream.Create; try ObjectResourceToText(fs, ms); ms.Position := 0; // <-- das muss da rein, dann geht's. Form1.Memo1.Lines.LoadFromStream(ms); finally fs.Free; ms.Free; end; end; |
AW: Delphi Project Viewer 1.0
So ist das ok. Danke.
|
AW: Delphi Project Viewer 1.0
Update:
Version 1.0.40.0 - Binär zu Text Konvertierung für *.dfm Dateien - allg. Dateiverwaltung verbessert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz