掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
EnumChildWindowsでTLabelを取得するには? (ID:45406)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
※下記は前のレスのセルフフォローに過ぎません。なぜならば、これですべての問題が解決するわけではないので。 ----------------------------------------------------------------------------------------------- dfmの簡易的解析は十分達成されたと思ってたのですが、基本的な所で落とし穴がありました。 どうもdfmファイル内で一行を255文字以内に納めるため、適当な所でちょん切って改行する仕様みたいです。 模擬的な例を示しますと、以下のような形です。 #12487+#12523 + ' '+#9734 + #12501+ #12449 +#12452 定数として表現するとこのようになります。 '#12487+#12523 + '' ''+#9734 +'#$0D#$0A'#12501+ #12449 +#12452' これをデコードすると、「デル ☆ファイ」になります。 これに対応するには、先に提示したTokenToWideString関数の一番内側のブロックを以下に差し替えればOkです。 if Parser.Token in [toString, toWString] then begin Result:=Parser.TokenWideString; while Parser.NextToken='+' do begin Parser.NextToken; if not (Parser.Token in [toString, toWString]) then Parser.CheckToken(toString); Result:=Result+Parser.TokenWideString; end; end else begin Result:=Parser.TokenString; end; ちなみに、(OpenCLXの)ClassesにあるObjectTextToBinaryの関数内関数内関数をパク…もとい、参考にしました。 ----------------------------------------------------------------------------------------------- これで万事Ok…ではないです。この関数に渡す前に複数トークンの切り出しと連結を行わないといけませんし、 そもそも「1行=1プロパティ」となってない以上、簡易的解析では無理だと悟りました。(後でもっと無理と判明。) で、Classesをいろいろ眺めていたら、TReaderを使えば出来そうだと気付きました。 TParserがトークン(最小単位)の切り出ししか行えないのに対し、TReaderならdfmの構造をチェックしつつ、意味の あるデータとして取り出してくれます。 自力であーだこーだしてみたんですが無理っぽいので、使用例を検索。ぜんぜん無い…かと思ったらありました! TXMLDocument - Delphi@WCIMH(いつも心に工事中!) - YTさんのサイト http://hp.vector.co.jp/authors/VA028375/delphi/sample_xml.html ↑こちらはXMLに変換するというサンプルですが、出力を変えればどうにでも出来ます。 これで目途が立った…と思ったんですが、そうは甘くなかったですね。 ということで次に続きます。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.