CurrentFolder関数No.06587
KEG さん 02/04/20 18:51
 
CurrentFolder関数は,フォルダ枠中で現在選択しているフォルダの名前を返します
が,「受信,未送信」の二つの値しか返さず,私が必要としている「草稿」という値
も加えて欲しいというしだいです。
ほかにも,「送信済み,ゴミ箱」が必要とされるかもしれません。

[ ]
RE:06587 CurrentFolder関数No.06590
ひろ さん 02/04/20 19:28
 
 KEG さん今日は、ひろです。
> CurrentFolder関数は,フォルダ枠中で現在選択しているフォルダの名前を返します
> が,「受信,未送信」の二つの値しか返さず,
 末技のマクロが確認しましたが、私の環境 Windows98+鶴亀 Ver.1.83 では
その様なことは起きません???
//-------------------------------------------------------------------
loaddll "tkinfo.dll";
message dllfuncstr( "CurrentFolder" );
freedll;

[ ]
RE:06590 CurrentFolder関数No.06597
KEG さん 02/04/20 22:25
 
あ!すいません。
NewMail関数を使った後にCurrentFolder関数使ってました。

[ ]
RE:06590 CurrentFolder関数No.06598
KEG さん 02/04/20 22:38
 
それで,「草稿¥同好会」という値が返されるわけですが,
「草稿¥」の部分を削除したいんですが,どうしたらいいでしょう?
暇な方,お教えください。

[ ]
RE:06587 CurrentFolder関数No.06599
たるっぱ さん 02/04/20 22:45
 
たるっぱです。

>CurrentFolder関数は,フォルダ枠中で現在選択しているフォルダの名前を返します
>が,「受信,未送信」の二つの値しか返さず,私が必要としている「草稿」という値
>も加えて欲しいというしだいです。
>ほかにも,「送信済み,ゴミ箱」が必要とされるかもしれません。

ええっと、CurrentFolder関数が、例えば"草稿\メモ"や"受信\鶴亀"と返すと
ころを、サブフォルダ名を除いた"草稿"や"受信"だけが返って欲しいというこ
とですか?

もしそうならば、以下のようなロジックで可能です。($rootfldに格納されます)

loaddll "tkinfo.dll";
$curfld = dllfuncstr( "CurrentFolder" );
#pos = strstr($curfld, "\\");
if (#pos >= 0) $rootfld = leftstr($curfld, #pos);
else $rootfld = $curfld;

[ ]
RE:06599 CurrentFolder関数No.06600
KEG さん 02/04/20 23:51
 
こんばんわ。
サブフォルダ名を除くのではなく,サブフォルダ名が欲しいのです。

[ ]
RE:06599 CurrentFolder関数No.06601
KEG さん 02/04/20 23:56
 
っと,CurrentFolder関数は,「草稿」も返してくれました。
お手数かけてすみません。

[ ]
RE:06598 CurrentFolder関数No.06602
KEG さん 02/04/21 00:26
 
たるっぱさんのロジックを遣わさせていただきます。
これでいいでしょうか?動作しているのでいいんだと思います。


         $cf = dllfuncstr( "CurrentFolder" );
#pos = strstr($cf, "\\");
if (#pos >= 0) $rootfld = rightstr($cf, #pos + 2);
else $rootfld = $cf;

[ ]
RE:06602 CurrentFolder関数No.06604
たるっぱ さん 02/04/21 01:46
 
KEGさんこんばんは たるっぱです。

>これでいいでしょうか?動作しているのでいいんだと思います。
>
>
>         $cf = dllfuncstr( "CurrentFolder" );
>#pos = strstr($cf, "\\");
>if (#pos >= 0) $rootfld = rightstr($cf, #pos + 2);
>else $rootfld = $cf;

いえ、NGです。
サブフォルダ名のみ取得なら、こんな具合でしょうか。

$cf = dllfuncstr( "CurrentFolder" );
#pos = strstr($cf, "\\");
if (#pos >= 0) $subfld = rightstr($cf, strlen($cf)-#pos-1);
else $subfld = "";

もし、これ以上話が続くようなら、http://www.maruo.co.jp/turukame/5/
の方へどうぞ。

[ ]
RE:06598 CurrentFolder関数No.06615
ひろ さん 02/04/21 12:57
 
 KEG さん今日は、ひろです。
> それで,「草稿¥同好会」という値が返されるわけですが,
> 「草稿¥」の部分を削除したいんですが,どうしたらいいでしょう?

loaddll "tkinfo.dll";
$folder = dllfuncstr( "CurrentFolder" );
call strstr2 $folder, "\\";
if( ##return != -1 )
  $folder = rightstr( $folder, strlen( $folder ) - ##return - 1 );
message $folder;
freedll;
endmacro;

strstr2:// 文字列の後方から文字列を検索するサブルーチン
  // (引数) $$1: 文字列、$$2: 検索文字列
  // (返り値) ##return: 見つかった位置(0オリジン)、-1:見つからなかった
  ##RC = -1;
  ##Size = strlen($$2);
  while( 1 ){
    ##Pos = strstr( $$1, $$2 );
    if( ##Pos == -1 )break;
    ##RC = ##RC + ##Pos + ##Size;
    $$1 = rightstr( $$1, strlen( $$1 ) - ##Pos - ##Size );
  }
  return ##RC;

[ ]