開いているファイルのフルパスからの切り出し

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
雷電

開いているファイルのフルパスからの切り出し

#1 投稿記事 by 雷電 »

ファイルパスをフルパスからファイル名だけを取り出そうとして悩んでいます。
フルパスからファイル名は切り出せるんですけど、切り出してしまうと、フォルダのパスになってしまいます。
どうにかならないものなのでしょうか?
Toshi
記事: 98
登録日時: 2005年7月19日(火) 19:47
お住まい: 山形県
連絡する:

#2 投稿記事 by Toshi »

フルパスからファイル名の部分だけを切り出すと、「何が」フォルダのパスになってしまうのでしょうか?
そこが質問の大事なところだと思うので...
雷電

#3 投稿記事 by 雷電 »

コード: 全て選択

Dim i As Long

i=lstrlen(File)-1
Do
    If File=Asc("\") Then
          File=0
          Exit Do
    End If
    i=i-1
    If i<0 Then Exit Do
Loop

こういうことです。
しかしこれはフォルダのパスを作るものなので、できません
雷電

#4 投稿記事 by 雷電 »

質問の大事なところに答えるのを忘れていましたね。
その開いているファイルのあるフォルダです。
Tomorrow
記事: 72
登録日時: 2005年6月04日(土) 10:09

Re: 開いているファイルのフルパスからの切り出し

#5 投稿記事 by Tomorrow »

> ファイルパスをフルパスからファイル名だけを取り出そうとして悩んでいます。
Win32APIのGetFileTitle()を使ってはみてはどうでしょう?

http://www.activebasic.com/help_center/ ... eTitle.htm
雷電

#6 投稿記事 by 雷電 »

使ってみましたが、うまくいきません、
作ったコードに間違いがあるのでしょうか?

コード: 全て選択

Dim FILEPATH[MAX_PATH-1] As BytePtr
Dim FULL As BytePtr

GetFileTitle(FULL,FILEPATH,MAX_PATH)
SetWindowText( hMainWnd, FILEPATH)
Toshi
記事: 98
登録日時: 2005年7月19日(火) 19:47
お住まい: 山形県
連絡する:

#7 投稿記事 by Toshi »

そのような場合なら

コード: 全て選択


Dim FILEPATH[MAX_PATH-1] As Byte

です。ポインタではなく文字列そのものを格納するバッファが必要になります。
雷電

#8 投稿記事 by 雷電 »

できましたが、ウィンドウのタイトルバーには文字列が表示されません。
何故でしょう?
ゲスト

#9 投稿記事 by ゲスト »

セットウィンドウテキスト
雷電

#10 投稿記事 by 雷電 »

私的には、GetFileTitle関数のパラメータ指定が間違っているとしか思いようがありません。
しかし、どこが間違っているのやら・・・さっぱり。
探してみます。
Ryo

#11 投稿記事 by Ryo »

コード: 全て選択

    Sub MainWnd_Create ( ByRef CreateStruct As CREATESTRUCT )
        Dim FullPath As BytePtr
        Dim NameByte As Integer
        Dim FileName As BytePtr
        FullPath = malloc ( 24 )
        lstrcpy ( FullPath , "C:\WINDOWS\explorer.exe" )
        NameByte = GetFileTitle ( FullPath , FileName , 0 )
        FileName = malloc ( NameByte )
        GetFileTitle ( FullPath , FileName , NameByte )
        SetWindowText ( hMainWnd , FileName )
        free ( FileName )
    End Sub
こんな感じでどうでしょうか?

#この処理を関数化しようと試みましたが上手くいきませんでした。
#String型でなら関数化出来たんですがString型は嫌いなので・・・。
Ryo

#12 投稿記事 by Ryo »

すみません、free ( FileName )の前にfree ( FullPath )が抜けてました。
返信する