みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
フィールド1の画像とフィールド2の画像が一致する場合に
フィールド3に”一致” と表示させることはできますか?
画像の種類は数個なのですべてそれぞれのグローバルFにいれておき
スクリプトでフィールド1、2に入力する予定ですが、
数値ではなく画像なのでIF構文で書くことができずに悩んでいます
FMP14 WIN10です
Exact関数は、画像も一致比較可能です。
ヘルプ参照→https://www.filemaker.com/help/14/fmp/j … tml#103863
Offline
フィールド設定で同じソースから入れてるんだから、単に「フィールド1=フィールド2」で比較できるのでは。
画像で = 処理できましたっけ?
画像で = 処理できましたっけ?
できちゃいした
Offline
= での処理は、索引テーブルの中で処理されたと記憶しています。テキストフィールドの索引は、各単語または値の先頭 100 文字、数字フィールドは、先頭の 400 桁に対して索引が設定され、オブジェクトフィールドもそのどちらかと同じ様な制限があったと思います。(その資料が見つからないのですが)
Exact関数は、実データを見ますので、その制限は無いはずです。
Offline
=だと(テキスト変換された)ファイル名とかハッシュ値しか比較しない可能性があるってことですね。
この案件では、わざわざ違う画像を同じファイル名にしたりしてなければ、特に問題はなさそう。
私の検証では
ファイルの読み込みしないで
画像のコピペでほうりこんでます
それでもできてしまったのです
Offline
ほんとだ。Exact関数のヘルプだと、参照と実体の場合は同じ画像でも一致しないと見なすためには関数が必要なようにも読めるけど、=でも同じですね。単に強調してるだけか。
まぁFMPの柔軟性のなせる技かも
Offline
> = での処理は、索引テーブルの中で処理された
でしょうか?
索引非保存のフィールドでもこの計算は出来ますよね。
ということではないのかな。。
Offline
私のでは同じピクチャをファイル名変えて入れてみたけど
Exactも=もどちらもGetAsTextを比較しているようで
別物になってしまう・・・
Offline
バージョンによって結果が違うのかも
いやそうでもなさそう
私はMacOS FMP12でしたが
15に変換して新しいデータを挿入したけど
同じ結果だなぁ。。
=もExactも同じ結果返します
Winでは試していないです
Offline
GetAsTextというか、メタデータも保存されてる(同じファイルでもファイルを挿入とピクチャを挿入では別物)んで、ファイル名が違えば別物ですね。
ファイルの中身を比較するにはBase64Encode()が必要。
試した範囲(外部保存は試してない)で=とExact()が違う結果になるケースは、見当たらず。
>索引非保存のフィールドでもこの計算は出来ます
索引は補助的で、索引が違えばその時点で不一致と判断できる、ということかな。
索引に関しては、もっと詳細な資料が欲しいですよね。文字数自体が公式に言明されてる100と400じゃないみたいだし。
気が付いたことを気ままに列挙!
・「=」でも索引(有効桁数や索引言語)の制約や影響は無いようです。
・「Exact」だけ当初紹介したのは、このオフィシャル解説だけ見つかったからです。
・「=」と「Exact」の主な違いは、大/小文字や言語マルメ文字(漢/洋数字)などを区別するか、のようです。
・ 両者の「実体画像」比較で、バイナリそのものを比較できるのか、内包テキスト部のみを比較するのか、は不明。
・ 仮に「テキスト比較」が仕様なら、(この仕様の方が濃厚な雰囲気!^^;)
・ 類型文字「区別」の必要性により「=」と「Exact」を使い分けます。
・ Base64変換でバイナリ画像自体をテキスト化する場合、Base64は大小文字を別視しますから、「Exact」が必須です。
Last edited by Hiro (2016-12-28 15:00:16)
Offline
画像は単純ではないのですね。難しいです。
Offline
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 525.39 KiB (Peak: 546.3 KiB) ]