C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: Winアプリ用ファイル分割・統合のプログラミングについて


(過去ログ 37 を表示中)

[トピック内 13 記事 (1 - 13 表示)]  << 0 >>

■17862 / inTopicNo.1)  Winアプリ用ファイル分割・統合のプログラミングについて
  
□投稿者/ DRINK (1回)-(2008/05/02(Fri) 16:00:18)

分類:[VB.NET/VB2005] 

すいません、完全なド素人ですが、よければ返答お願いします。
Windowsアプリケーションとしてファイル分割・統合のソフトウェアを作成する際に、以下の機能を持たせたいのです。
(1)指定されたファイルを任意のサイズに分割(ただしオリジナルのファイルはそのままで分割ファイルを作成)
(2)もしくは指定されたファイルを等分割(何分割するか選択可、また分割後のファイルサイズも決定前に表示)
(3)分割ファイルの名称を指定
(4)指定されるファイルのサイズ、分割ファイルのサイズは問わない←(どうも2GB以上ではエラーが出るなどを聞くので)
大体こんな感じです。
非常に厚かましいお願いですがご教授願います。
引用返信 編集キー/
■17866 / inTopicNo.2)  Re[1]: Winアプリ用ファイル分割・統合のプログラミングについて
□投稿者/ 魔界の仮面弁士 (711回)-(2008/05/02(Fri) 17:01:18)
2008/05/02(Fri) 17:02:05 編集(投稿者)

No17862 (DRINK さん) に返信
> 以下の機能を持たせたいのです。

やりたいことを列挙するのでは無く、その中で聞きたい部分を、
もう少し具体的に書いていただけると助かります。m(_ _)m

「やりたいこと」のプログラム仕様はわかりましたが、質問内容としての
「わからないこと/悩んでいること/相談したいこと」が書かれていませんので、
これだけだと、何を答えれば良いのか困ってしまいます。


たとえば――

・自分で組んでみたけれど、期待動作しないというのであれば:
 →実際のコードとその実行結果を、本来期待していた結果と共に示してください。
  エラーが出るならその内容も正確に。

・御自身で列挙した項目について、実装手順が分からないのであれば:
 →わからない部分を明確に記述してみてください。
  VB の文法そのものが良く分からないという段階なのか、それとも、
  どのようなクラスを使えば良いのかが分からない段階なのか、あるいは
  クラスも実装方法も分かるけれど、もっと効率的な方法を探している、とか。
引用返信 編集キー/
■17888 / inTopicNo.3)  Re[1]: Winアプリ用ファイル分割・統合のプログラミングについて
□投稿者/ 倉田 有大 (212回)-(2008/05/03(Sat) 01:00:59)
No17862 (DRINK さん) に返信
> すいません、完全なド素人ですが、よければ返答お願いします。
> Windowsアプリケーションとしてファイル分割・統合のソフトウェアを作成する際に、以下の機能を持たせたいのです。
> (1)指定されたファイルを任意のサイズに分割(ただしオリジナルのファイルはそのままで分割ファイルを作成)
> (2)もしくは指定されたファイルを等分割(何分割するか選択可、また分割後のファイルサイズも決定前に表示)
> (3)分割ファイルの名称を指定
> (4)指定されるファイルのサイズ、分割ファイルのサイズは問わない←(どうも2GB以上ではエラーが出るなどを聞くので)
> 大体こんな感じです。
> 非常に厚かましいお願いですがご教授願います。

えーと、とりあえず、ファイルの読み込みや書き込みはプログラムできるのでしょうか?
引用返信 編集キー/
■18147 / inTopicNo.4)  Re[2]: Winアプリ用ファイル分割・統合のプログラミングについて
□投稿者/ DRINK (3回)-(2008/05/09(Fri) 15:09:34)
魔界の仮面弁士さんにご指導いただいたように、まず自分で可能な限りプログラミングしようとしていたらひどく時間がかかってしまいました。
書き込みしてもらった二人に深くお詫び申し上げます。
とりあえず手近な参考書等から以下のようなものがあったんですが、これで最初に述べた機能を果たせるでしょうか。これでは何ができないとか、何が抜けているとか、遠慮なしに言ってください。
ただ自分は本当に初心者で、これを書き込んでいる時点でまだ以下の内容を把握できていません。駆け出しにもわかるようにしてくれると幸いです。自分もできる限りついていけるように勉強していきますので。


Public Function CreateBunkatuFile(BunkatuFileName As String, Optional lngBunkatuByteSize As Long = 1024& * 1024&) As Long
On Error Resume Next

Dim PutBunkatuFileBuffer() As Byte
Dim GetFileByteALL() As Byte
Dim BatCommand$
Dim SaveFileName$
Dim FileNameOnly$
Dim FileCount&
Dim i&


If lngBunkatuByteSize > FileLen(BunkatuFileName) Then CreateBunkatuFile = -1: Exit Function

Open BunkatuFileName For Binary As #FreeFile()
ReDim GetFileByteALL(FileLen(BunkatuFileName) - 1)
Get #1, , GetFileByteALL()
Close

FileCount& = UBound(GetFileByteALL) \ lngBunkatuByteSize
BatCommand$ = "copy /b "
FileNameOnly$ = Dir(BunkatuFileName)

For i& = 0 To FileCount&
ReDim PutBunkatuFileBuffer(IIf(i& = FileCount&, UBound(GetFileByteALL) - (lngBunkatuByteSize * FileCount&), lngBunkatuByteSize - 1))

Call CopyMemory(PutBunkatuFileBuffer(0), GetFileByteALL(lngBunkatuByteSize * i&), UBound(PutBunkatuFileBuffer) + 1)
SaveFileName$ = BunkatuFileName & "." & Format$(i&, "000")

Open SaveFileName$ For Binary As #FreeFile()
Put #1, , PutBunkatuFileBuffer()
Close
BatCommand$ = BatCommand$ & FileNameOnly$ & "." & Format$(i&, "000") & " + "
Next i&

BatCommand$ = Left(BatCommand$, Len(BatCommand$) - 2) & FileNameOnly$
Open BunkatuFileName & ".bat" For Output As #FreeFile()
Print #1, BatCommand$
Close

CreateBunkatuFile = Err
End Function
引用返信 編集キー/
■18149 / inTopicNo.5)  Re[3]: Winアプリ用ファイル分割・統合のプログラミングについて
□投稿者/ はつね (652回)-(2008/05/09(Fri) 15:23:27)
はつね さんの Web サイト
No18147 (DRINK さん) に返信
> とりあえず手近な参考書等から以下のようなものがあったんですが、これで最初に述べた機能を果たせる
> でしょうか。これでは何ができないとか、何が抜けているとか、遠慮なしに言ってください。
> ただ自分は本当に初心者で、これを書き込んでいる時点でまだ以下の内容を把握できていません。駆け出
> しにもわかるようにしてくれると幸いです。自分もできる限りついていけるように勉強していきますので。

それぞれの行(複数行でも可)が何をやっているのか↓のようなコメントを行の上に書いてみたら?
'''説明:・・・ここに自分なりの説明・・・・・

そうすれば、どこの理解が間違えていてどこの理解は正しいかなどの指摘がもらえるかも知れませんよ。
あと、図表モードで投稿すると吉。

例)
'''説明:指定した長さよりもファイルサイズが小さかったら-1を返却
If lngBunkatuByteSize > FileLen(BunkatuFileName) Then CreateBunkatuFile = -1: Exit Function

うーん、あんまり良いソースじゃないように思える(目的に沿っているかどうかじゃなくて、見易さ的に)。

引用返信 編集キー/
■18152 / inTopicNo.6)  Re[4]: Winアプリ用ファイル分割・統合のプログラミングについて
□投稿者/ DRINK (4回)-(2008/05/09(Fri) 15:36:28)
No18149 (はつね さん) に返信
> それぞれの行(複数行でも可)が何をやっているのか↓のようなコメントを行の上に書いてみたら?
> '''説明:・・・ここに自分なりの説明・・・・・
>
> そうすれば、どこの理解が間違えていてどこの理解は正しいかなどの指摘がもらえるかも知れませんよ。
> あと、図表モードで投稿すると吉。
>
> 例)
> '''説明:指定した長さよりもファイルサイズが小さかったら-1を返却
> If lngBunkatuByteSize > FileLen(BunkatuFileName) Then CreateBunkatuFile = -1: Exit Function
>
> うーん、あんまり良いソースじゃないように思える(目的に沿っているかどうかじゃなくて、見易さ的に)。
>
ご指摘ありがとうございます。ただそれだとここで意見をもらうにはソースのすべてをあらかじめ理解しておくということですよね?
当たり前のことなのですが、自分はまだその当たり前がまだできていないので少し待ってもらえますか?
引用返信 編集キー/
■18159 / inTopicNo.7)  Re[3]: Winアプリ用ファイル分割・統合のプログラミングについて
□投稿者/ 魔界の仮面弁士 (722回)-(2008/05/09(Fri) 16:12:18)
No18147 (DRINK さん) に返信
> とりあえず手近な参考書等から以下のようなものがあったんですが、
その参考書は、VB6 の物ですよね。

DRINK さんの環境は、
>>> 分類:[VB.NET/VB2005]
なのですから、.NET 対応の書籍を入手する必要があるかと。


> これで最初に述べた機能を果たせるでしょうか。
満たせません。そもそも言語バージョンが異なりますので、そのままでは実行できないはずです。

.NET の勉強をするのに、VB6 の書籍を使うのはやめた方が良いと思いますよ。
VB6 のコードを VB.NET に変換するとなれば、VB6 についての知識も必要になってしまいますし。
引用返信 編集キー/
■18825 / inTopicNo.8)  Re[4]: Winアプリ用ファイル分割・統合のプログラミングについて
□投稿者/ DRINK (5回)-(2008/05/16(Fri) 15:53:46)
No18159 (魔界の仮面弁士 さん) に返信
> DRINK さんの環境は、
> >>> 分類:[VB.NET/VB2005]
> なのですから、.NET 対応の書籍を入手する必要があるかと。
ご忠告ありがとうございます。言われないと気付けない所でした。
これ以外にソースコードのサンプルが手に入らなかったら、VB6からの変換を勉強した方がいいでしょうか?
一応他のサンプルらしきものはあるんですが、どうもVB6のもののようなので無駄だとは思いますが載せておきます。
Public Function CnvMltVol(infnm As String, outfnm As String, outsize As Long) As Boolean

  Dim i          As Long
  Dim fnm        As String
  Dim fno        As Long
  Dim fno1       As Long
  Dim filesize   As Long
  Dim writesize  As Long
  Dim l          As Long
  Dim seqno      As Long

'** 異常終了セット
  CnvMltVol = False

'** 分割サイズチェック
  If outsize < 32000 Then
    MsgBox "分割サイズが 32000 未満です。" + Chr(10) + "32000 以上を指定して下さい。", 48, "CnvMltVol()"
    Exit Function
  End If

'** 入力ファイルオープン
  On Local Error Resume Next
  fno = FreeFile
  Open infnm For Input As fno Len = 32000
  If Err <> 0 Then
    MsgBox "入力ファイルのオープンに失敗しました。" + Chr(10) + " for input infnm = " + infnm, 48, "CnvMltVol()"
    Exit Function
  End If
  Close fno
  Err = 0
  fno = FreeFile
  Open infnm For Binary As fno Len = 32000
  If Err <> 0 Then
    MsgBox "入力ファイルのオープンに失敗しました。" + Chr(10) + "for binary infnm = " + infnm, 48, "CnvMltVol()"
    Exit Function
  End If

'** 分割処理
  i = InStrRev(outfnm, ".")
  If i = 0 Then Exit Function
  fnm = Left(outfnm, i - 1)
  seqno = 1
  fno1 = OpenMltFile(fnm, seqno, False)
  If fno1 = False Then
    Close fno
    Exit Function
  End If
  filesize = LOF(fno)
  writesize = 0
  Do Until filesize < 1
    l = filesize
    If l > 32000 Then l = 32000
    ReDim rec(l - 1) As Byte
    Get fno, , rec
    If writesize + l > outsize Then
      Close fno1
      seqno = seqno + 1
      fno1 = OpenMltFile(fnm, seqno, False)
      If fno1 = False Then
        Close fno
        Exit Function
      End If
      writesize = 0
    End If
    Put fno1, , rec
    writesize = writesize + l
    filesize = filesize - l
  Loop

'** ファイルクローズ
  Close fno1
  Close fno
  On Local Error GoTo 0

'** 正常終了セット
  CnvMltVol = True

End Function

何かいいサンプルコードがあったり、良案があったりしたらおしえてください。

引用返信 編集キー/
■18864 / inTopicNo.9)  Re[5]: Winアプリ用ファイル分割・統合のプログラミングについて
□投稿者/ 隅 (1回)-(2008/05/16(Fri) 21:05:15)
> > それぞれの行(複数行でも可)が何をやっているのか↓のようなコメントを
> > 行の上に書いてみたら?
>
> ご指摘ありがとうございます。ただそれだとここで意見をもらうには
> ソースのすべてをあらかじめ理解しておくということですよね?
> 当たり前のことなのですが、自分はまだその当たり前がまだできていないので
> 少し待ってもらえますか?

> 何かいいサンプルコードがあったり、良案があったりしたらおしえてください。

「コードの内容を理解するのは後まわしで、先にソフトを作ります」ということですか?
訳も分からないコードの塊を、但し書き頼りにくっつけて動かそうということなのでしょうか。
何というか…そんなにプログラミングが嫌いなら無理にしなくても良いのでは…。
引用返信 編集キー/
■18878 / inTopicNo.10)  Re[5]: Winアプリ用ファイル分割・統合のプログラミングについて
□投稿者/ 倉田 有大 (235回)-(2008/05/17(Sat) 01:59:53)
2008/05/17(Sat) 02:02:59 編集(投稿者)
2008/05/17(Sat) 02:02:22 編集(投稿者)
2008/05/17(Sat) 02:00:38 編集(投稿者)

> 何かいいサンプルコードがあったり、良案があったりしたらおしえてください。

まず、勉強する言語を決めましょうよ。VB6のサンプルコードがあるからVB6ではなくて。
ファイルを読み込んだり、書き込んだりするぐらいのサンプルコードならどんな言語にもありますし。
とりあえず言語を決めた後、ファイルを開いて中身をコンソールウインドウに出力することぐらいからはじめたらいかがでしょうか?
千里の道も一歩からだと思いますよ。
引用返信 編集キー/
■18879 / inTopicNo.11)  Re[6]: Winアプリ用ファイル分割・統合のプログラミングについて
□投稿者/ とおりすかり (7回)-(2008/05/17(Sat) 04:10:32)
2008/05/17(Sat) 07:09:54 編集(投稿者)

No18864 (隅 さん) に返信
>>> それぞれの行(複数行でも可)が何をやっているのか↓のようなコメントを
>>> 行の上に書いてみたら?
>>
>>ご指摘ありがとうございます。ただそれだとここで意見をもらうには
>>ソースのすべてをあらかじめ理解しておくということですよね?
>>当たり前のことなのですが、自分はまだその当たり前がまだできていないので
>>少し待ってもらえますか?
>
>>何かいいサンプルコードがあったり、良案があったりしたらおしえてください。
>
> 「コードの内容を理解するのは後まわしで、先にソフトを作ります」ということですか?
> 訳も分からないコードの塊を、但し書き頼りにくっつけて動かそうということなのでしょうか。
> 何というか…そんなにプログラミングが嫌いなら無理にしなくても良いのでは…。

そんないやみったらしいことをいわなくてもよいのでは?(また炎上の火種になりますよ。
私の指摘の仕方もよろしくないと自重してます。自重貫徹)
きちんと相手の心が納得できるように言葉を選ぶのもSEには要求される力ではないでしょうか。
偉そうでスミマセン。

引用返信 編集キー/
■18886 / inTopicNo.12)  Re[5]: Winアプリ用ファイル分割・統合のプログラミングについて
□投稿者/ はつね (701回)-(2008/05/17(Sat) 08:18:01)
はつね さんの Web サイト
No18825 (DRINK さん) に返信
> 何かいいサンプルコードがあったり、良案があったりしたらおしえてください。

回答ではありませんが、ご参考まで。
http://blogs.wankuma.com/hatsune/archive/2008/05/17/138056.aspx

引用返信 編集キー/
■18893 / inTopicNo.13)  Re[5]: Winアプリ用ファイル分割・統合のプログラミングについて
□投稿者/ Azulean (114回)-(2008/05/17(Sat) 12:46:05)
サンプルの出元を参考までに記載。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t32.htm
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -