プラットフォーム: Lazarus 1.1、FreePascal 2.7.1、Win 7 32 ビット。
次のような文字列値があります。
FileName[12345][45678][6789].jpg
デフォルトでは (これがデフォルトの動作 0 であると仮定します)、私のプログラムは現在、最後の角括弧のペアからファイル名の右端にある最後の数字のセット、つまり 6789 を引き出します。これは、次のコードを使用して行います。
if chkbxOverrideUniqueID.Checked then
IDOverrideValue := StrToInt(edtToggleValue.Text);
// User is happy to find the right most unique ID
if not chkbxOverrideUniqueID.Checked then
LastSquareBracket := RPos(']', strFileName);
PreceedingSquareBracket := RPosEx('[', strFileName, LastSquareBracket) + 1;
strFileID := AnsiMidStr(strFileName, PreceedingSquareBracket, LastSquareBracket - PreceedingSquareBracket)
else // User doesn't want to find the rightmost ID.
// and now I am stuck!
ただし、ユーザーがデフォルト以外の動作を指定するためのオプションを追加しました。たとえば、「1」と入力すると、「一番右の ID から最初の ID を探す」ことを意味します。例: [45678]。[6789] はデフォルトの動作 0 であるため、覚えておいてください。2 を入力した場合は、[12345] を見つけてもらいたいです。
私の質問:これを達成するために上記のコードをどのように適応させますか?