HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
1112
あきまさ2GB以上のファイルの操作5解決


あきまさ

リンク

2014/11/12(Wed) 10:40:29|NO.65995

ttp://hsp.tv/play/pforum.php?mode=pastwch&num=21665
にて2GB以上のファイルの読み込みは可能なのですが、
2GB以上のファイルの書き込み、およびファイルサイズの取得は可能でしょうか?
ファイルサイズはint型で先頭4バイト、後方4バイトでも、str取得でもどちらでも構いません。



この記事に返信する


skyblue

リンク

2014/11/12(Wed) 16:14:43|NO.65996

GetFileSize関数を使用して第二引数と返り値にDWORD(符号なし32bit)で
ファイルサイズが取得できますのでエンディアンに注意しながら1Byte単位で読み込んで
判定などを行う。



あきまさ

リンク

2014/11/12(Wed) 17:57:30|NO.65998

第二引数と返り値はどのように取得すればよいのでしょうか。
あと書き込みはWriteFile関数を使うところまではわかったのですが、ハンドルなどよくわからないです。



kanahiron

リンク

2014/11/12(Wed) 18:30:42|NO.65999

ファイルサイズの取得なら

#uselib "kernel32.dll" #cfunc CreateFile "CreateFileA" int,int,int,int,int,int,int #func GetFileSizeEx "GetFileSizeEx" int,int #func CloseHandle "CloseHandle" int #cfunc GetFileSize "GetFileSize" int,int #define GENERIC_WRITE 0x40000000 #define GENERIC_READ 0x80000000 #define FILE_SHARE_READ 0x00000001 #define FILE_SHARE_WRITE 0x00000002 #define FILE_SHARE_DELETE 0x00000004 #define CREATE_NEW 1 #define CREATE_ALWAYS 2 #define OPEN_EXISTING 3 #define OPEN_ALWAYS 4 #define TRUNCATE_EXISTING 5 filename = "G:\\amarectv220c\\amarec(20140725-2230).avi" lowdw = 0 highdw = 0 hfile = 0 hfile = CreateFile(varptr(filename),GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,0) mes hfile lowdw = GetFileSize(hfile,varptr(highdw)) mes strf("%08X",lowdw) mes strf("%08X",highdw) CloseHandle hfile mes stat
先頭4バイトがhighdw、後方4バイトがlowdwに入っています

あきまささんが貼ったURL(なぜtを抜いたのかわかりませんが)に書いてあるソースと途中までしてることは同じです
見比べてみてください



あきまさ

リンク

2014/11/12(Wed) 19:43:35|NO.66000

あ、なるほど1関数で2つ出力されるんですね。ちょっとHSPの常識とは外れた返り方でわかりませんでした。
ありがとうございます。
あとはなんとか読み込みのモジュールを改造しながら何とかやってみます。



skyblue

リンク

2014/11/13(Thu) 07:24:11|NO.66005

>あきまささんが貼ったURL(なぜtを抜いたのかわかりませんが)に書いてあるソースと途中までしてることは同じです
投稿制限回避のためのテクニックでhttpの先頭のhを抜くと言うものです。



ONION software Copyright 1997-2023(c) All rights reserved.