☆☆☆ merrybelleの掲示板 ☆☆☆
皆さん、お気軽に書き込んでください。
STORE substrutf(string01,10,3,string02) TO string02 でstring02を定義してるからであって utf_to_shift の動作は問題ないのですね? 確認できました。早とちりしてすみませんでした <m(__)m>
書き込み[122]で
検索のキーワードをそのまま設定し
urlエンコードはブラウザにまかせましたが
たとえば"cからc#のdllを呼ぶ"を検索するときに
run "C:\Program Files\Mozilla Firefox\firefox.exe";
https://www.google.co.jp/search?q=cからc#のdllを呼ぶ
とすると"#"がurlに使えない文字なのでうまくいきません
そこで"#"などだけをurlエンコードするurlencodeasc()をつくりました
上記の例では
EXTERN CDECL CSTRING urlencodeasc(CSTRING,CSTRING) encode001.dll
store urlencodeasc('cからc#のdllを呼ぶ',space(100)) to str01
run "C:\Program Files\Mozilla Firefox\firefox.exe";
https://www.google.co.jp/search?q=&str01
とするといいようです
http://merrybelle.sub.jp/merrybelleの urlエンコードデコードのところでは 元の文字列"12345abcde日本語"(shift_jis) をいろいろに変換しています STORE '12345abcde日本語' TO string01 STORE SPACE(1000) TO string02(バッファ) STORE shift_to_utf(string01,string02) TO string02 でutf-8に変換し STORE string02 TO string01 STORE SPACE(1000) TO string02(バッファ) STORE substrutf(string01,10,3,string02) TO string02 でsrting01(utf-8)の10文字目から3文字抜き出します 1バイト文字の"e"と3バイト文字の"日本"とで 計3文字"e日本"(utf-8)が抜き出されます STORE string02 TO string01 STORE SPACE(1000) TO string02(バッファ) STORE utf_to_shift(string01,string02) TO string02 でshift_jisに変換し ? string02 で"e日本"(shift_jis)が表示されます
言葉足らずですみません string2の値がおかしいのではないでしょうか?
いつも質問ばかりですみません。 urlエンコードデコードのサンプルソースで最後3行 ? '<shiftjisに変換>' ? string02 ? '文字数'+str(LEN(string02)) 表示が 「日本語」にならず「e日本」になるのですが・・・・
すみません。おっしゃる通りですね。 ただ、現在は社内のサーバーにある、(古い言い方ですがイントラネット)のデータや情報を表示させるのに使っていてIEの終了で対策を悩んでました
すみません。おっしゃる通りですね。ただ、現在は社内のサーバーにある、(古い言い方ですがイントラネット)のデータや情報を表示させるのに使っていて IEの終了で対策を悩んでました
状況が昔と変わりセキュリティが最優先です 多機能のブラウザをAragoの子ウィンドウに入れるのは危険です 責任を免れません
動作を確認いたしました。 これをARAGOWのパネルの中で展開したいのですが どういう書き方をすればいいのでしょうか?
書き込み[120]で 検索のキーワードをURLエンコードしていますが これは間違いでした 検索のキーワードをURLエンコードすると "merrybelleの掲示板"の検索ではなく "merrybelle%82%CC%8C%66%8E%A6%94%C2"の検索に なってしまいます 下記のように検索のキーワードをそのまま設定します run "C:\Program Files\Mozilla Firefox\firefox.exe"; https://search.yahoo.co.jp/search?p=merrybelleの掲示板 run "C:\Program Files\Google\Chrome\Application\chrome.exe"; https://www.google.co.jp/search?q=merrybelleの掲示板
アドバイスありがとうございます 早速やってみます
Yahoo! JAPANのホームページを開くだけであれば
下記でできました
run "C:\Program Files\Mozilla Firefox\firefox.exe" https://www.yahoo.co.jp
EXTERN CDECL CSTRING urlencode(CSTRING,CSTRING) encode001.dll
EXTERN CDECL CINT run01(CSTRING,CINT) encode001.dll
store 'merrybelleの掲示板' to str01
store urlencode(str01,space(100)) to str02
run01('C:\Program Files (x86)\Google\Chrome\Application\chrome.exe;
https://www.google.co.jp/search?q='+str02,1)
*run01('C:\Program Files\Google\Chrome\Application\chrome.exe;
* https://www.google.co.jp/search?q='+str02,1)
すみません エラーというより 下記メッセージがでできて、使用者から、不安の声がでできました Yahoo! JAPANトップページの機能を正しくご利用いただくには、下記の環境が必要です。 パソコンでご利用のお客様 Windows:Internet Explorer 11.0以上 / Edge 最新版 / Chrome 最新版 / Firefox 最新版 macOS:Safari 11.0以上 ※Internet Explorer 11.0以上をご利用の場合は、 「Internet Explorerの互換表示について」を参考に、互換表示の無効化をお試しください。 タブレットでご利用のお客様 iOS 9.0以降、または、Android4.4以降のOSに標準搭載されたブラウザー ※日本国内版として発売されている端末でご利用ください。 IEも6/15で終了とのことで、若干不安になってきたので、掲示板に書かせて頂きました。
do WEBBROW.PRGは Internet Explorer 11で動きましたが どういう誤動作ですか? Aragoでブラウザの自動操作を行うDLLは作ってないです
久しぶりに、参加させていただきます ARAGOWのPOBJECTにWeb がありますが、WEBBROW.prgにある DEFINE WEB BROWSE が古いIEの仕様になので、誤動作するようになりました merrybellさんのDLLで、chromeとかEdgeの仕様で同様のWebを操作する方法はないでしょうか?
書き込み[76]のstartup1.exeを 管理者権限で実行(ユーザーアカウント制御が無効の状態)に変更しました プログラミングミスでシステムファイルなどを削除したりしないように 注意が必要です
私はあまり先が長くない身です 生き物ですので dBASEは40年くらい前からでした
いま社員の定年退職などが続いてどんどん事業縮小しています。 私もすでに年金受給者なっております。 今後新しい開発はなさそうです。 >あなた様の余裕があるうちは、引き続きよろしく といいましたが、もう大丈夫そうです。 長い間お世話になり、ありがとうございました。
>excelcli101.dllとexcelcs101.dllでexcelを使うときは 補足情報ありがとうございます。 実は、動作確認の後も、現行プログラムを従来方式のまま使い続けてます。 次回、大改造とは新プログラムを作ることになったときには、ぜひとも利用したいと思ってます。 ですが、その機会がないかもしれません。 先のことは分かりませんので、あなた様の余裕があるうちは、引き続きよろしくお願い致します。
excelcli101.dllとexcelcs101.dllでexcelを使うときは opnexcel(1)でexcelを起動したら必ずclsexcel()でexcelを終了しなければなりません opnexcel(1)でexcelを起動した後prgが中断するなどでclsexcel()が実行されない場合は excelが起動されたままになります その場合は opnexcel(1)で起動しexcelが表示されている場合はそのまま手動でexcelを終了する opnexcel(0)で起動しexcelが非表示の場合はタスクマネージャーでexcelを終了する
いまどき インターネット公開掲示板は不遇で・・ アクセスカウンタの99%以上はスパム投稿です
ソースファイル,DLLファイルとも更新されたんですね。 動作確認できました。
お世話になります。 実用はまだ先ですが、研究させていただきます。
EXTERN CDECL CINT keisen02(CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT) excelcli101.dll *左上セル(例3,8),右下セル(例8,8),右下がり斜線(0:なし 1:あり),右上がり斜線(0:なし 1:あり),太さ,色(例255,0,0) *太さ1:xlHairline 2:xlThin 3:xlMedium 4:xlThick keisen02(6,2,8,2,1,1,4,255,0,255) keisen02(7,3,8,3,1,0,2,0,255,255) keisen02(3,8,8,8,0,1,2,0,0,0)
またまた、仕事させてしまいました。 長年やりたかったスタイルで処理できそうです。 どうもありがとうございました。
*excelkei.prg
*excel.exeを使う
*遅い
*印刷ができる
*動作は
*aragow→excelcli101.dll→excelcs101.dll→excel.exe
*です
*excelcli101.dll
*excelcs101.dll
*の2個のdllをARAGOPRO.EXEのフォルダに置く
*(C#のDLLは"実行ファイルと同じフォルダまたはアセンブリ名のついたサブフォルダに置く")
*エクセルがインストールされている
*************************************************************************
EXTERN CDECL CINT opnexcel(CINT) excelcli101.dll
*excel.exeを開く 0は非表示 1は表示
EXTERN CDECL CINT opnbook(CSTRING) excelcli101.dll
*opnbook('D:\temp\test.xlsx')
*D:\temp\test.xlsxファイルがあれば開くなければ空のファイルを開く
EXTERN CDECL CINT opnsheet(CSTRING) excelcli101.dll
*opnsheet('sheet1')
*sheet1シートがあれば開くなければ空のシートを開く
EXTERN CDECL CINT savebook(CSTRING) excelcli101.dll
*savebook('D:\temp\test.xlsx')
*上書き保存
EXTERN CDECL CINT clssheet(CVOID) excelcli101.dll
*シートを閉じる
EXTERN CDECL CINT clsbook(CVOID) excelcli101.dll
*xlsxファイルを閉じる
EXTERN CDECL CINT clsexcel(CVOID) excelcli101.dll
*excel.exeを閉じる
EXTERN CDECL CINT keisen01(CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT,;
CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT) excelcli101.dll
*左上セル(例3,2),右下セル(例8,8),上辺の線種,太さ,色(例255,0,0),下辺の線種,太さ,色(例0,255,0),
*左辺の線種,太さ,色(例0,0,255),右辺の線種,太さ,色(例0,0,0)
*線種 0:罫線なし1:xlContinuous 2:xlDash 3:xlDashDot 4:xlDashDotDot 5:xlDot 6:xlDouble 7:xlSlantDashDot
*太さ(線種によって設定できないものがある)1:xlHairline 2:xlThin 3:xlMedium 4:xlThick
EXTERN CDECL CINT keisen02(CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT,CINT) excelcli101.dll
*左上セル(例3,8),右下セル(例8,8),右下がり斜線(0:なし 1:あり),右上がり斜線(0:なし 1:あり),太さ,色(例255,0,0)
*太さ1:xlHairline 2:xlThin 3:xlMedium 4:xlThick
EXTERN CDECL CINT cellmrg(cint,cint,cint,cint) excelcli101.dll
*************************************************************************
if opnexcel(1)<>0
? 'エクセルを起動できません'
return
endi
if opnbook('D:\temp\calendar.xlsx')<>0
? 'ブックに書き込みできません'
clsexcel()
return
endi
if opnsheet('カレンダー')<>0
? 'シートを開けません'
clsbook()
clsexcel()
return
endi
keisen01(3,2,8,8,7,3,255,0,0,3,3,0,255,0,4,3,0,0,255,6,4,0,0,0)
keisen01(3,3,8,3,7,3,255,0,0,3,3,0,255,0,1,2,0,0,0,1,2,0,0,0)
keisen01(3,7,8,7,7,3,255,0,0,3,3,0,255,0,1,2,0,0,0,1,2,0,0,0)
keisen02(6,2,8,2,1,1,4,255,0,255)
keisen02(7,3,8,3,1,0,2,0,255,255)
keisen02(3,8,8,8,0,1,2,0,0,0)
cellmrg(9,2,10,8)
keisen02(9,2,9,2,1,1,3,0,0,255)
? savebook('D:\temp\calendar.xlsx')
? savebook('D:\temp\calendar.pdf')
clssheet()
clsbook()
clsexcel()
早々のレス、いつもありがとうございます。 >あらかじめcalendar.xlsxを"罫線入り"で作成してから 承知しております。 >定型文書であれば 定型文書ですが、2種類あるんです。 例えば、月間販売集計であれば、合計表と、販売伝票一覧表です。 合計表の方は、行数も列数も固定なので、あらかじめ罫線入りのテンプレートを用意できますが、 伝票一覧表の方は、毎月行数が増減します。 なので、一行書き込むごとに、同時に罫線を追加したいのです。罫線入りテンプレートを用意できないのです。 そういう処理は、すでに数年前からExcelCreatorというソフトで、ARAGOWからEXEプログラムを起動するスタイルでやってます。 今回の話が実現できなくても、とくに困ることはありません。 最近、ExcelCreatorの新バージョンでC#が使えることが分かりました。 ExcelCreatorは機能があり過ぎでややこしいです。 シンプルな手段を模索してる訳です。 昔どなたかに、ExcelCreatorのことで個人的に相談したことありましたが、もしかして、あなたではありませんか。 当方、長年同じようなことやってます。
以前に aragowのプログラムで 白紙の状態から文書をつくるというのが あったようですが 定型文書であれば オーバーレイ印刷というのが 私のこだわりで・・ calendar3.prgの例で あらかじめcalendar.xlsxを"罫線入り"で作成してから calendar3.prgを実行すると セルに文字が書き込まれます Excelの定形文書であれば 文書のフォームをExcelで作成(罫線も含めて)し xlsxファイルで保存して そのxlsxファイルを読み込んで オーバーレイ印刷のように aragowで文字を書き込むことができます overlayprn.prgの例では 文書のフォームをWordなどで作成し pdfファイルで保存し そのpdfファイルをPDFCreatorなどでjpegファイルで保存して あるいは 定型文書をスキャンしてjpegファイルで保存して そこへ文字などをオーバーレイ印刷します
また、別の話させていただきます。
・http://www2.odn.ne.jp/merrybelle/のページ
excel.exeを使う
excelcli101.dll excelcs101.dll サンプル excel004.prg calendar3.prg excelcsv.prg
をダウンロードさせてもらいました。うまく動作してます。
ソースコードexcelcs101.csについて、お尋ねします。
このファイルの先頭に次の宣言があります。
using Microsoft.Office.Interop.Excel;
よそのサイト情報を調ていたら、このライブラリー(?)には、セル単位で罫線を付ける機能が含まれてるようですね。
そのサイトのページでは、こんな記述でした。
---------------------------------------------------
//"A1:C5"セルに罫線を引く
Excel.Range kRange = xlApp.get_Range("A1:C5",Type.Missing) as Excel.Range;
kRange.Borders.get_Item(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlContinuous;
kRange.Borders.get_Item(Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Excel.XlLineStyle.xlContinuous;
kRange.Borders.get_Item(Excel.XlBordersIndex.xlEdgeRight).LineStyle = Excel.XlLineStyle.xlContinuous;
kRange.Borders.get_Item(Excel.XlBordersIndex.xlEdgeTop).LineStyle = Excel.XlLineStyle.xlContinuous;
kRange.Borders.get_Item(Excel.XlBordersIndex.xlInsideHorizontal).LineStyle = Excel.XlLineStyle.xlContinuous;
kRange.Borders.get_Item(Excel.XlBordersIndex.xlInsideVertical).LineStyle = Excel.XlLineStyle.xlContinuous;
---------------------------------------------------
ソースコードexcelcs101.csの中に、次の関数(とは言わないのなか)があります。
これは、1つのセル(y1,x1)に値を書き込むところですね。
-----------------------------------------------------
public int wcellval(int y1, int x1, int val01)
{
string strtemp;
try
{
strtemp = "R" + y1.ToString() + "C" + x1.ToString();
strtemp = (string)excelapp.ConvertFormula(strtemp, XlReferenceStyle.xlR1C1, XlReferenceStyle.xlA1, Type.Missing, Type.Missing);
range = worksheet.get_Range(strtemp, Type.Missing);
range.Value2 = val01.ToString();
}
catch (Exception e)
{
return -1;
}
return 0;
}
----------------------------------------------
ここで、質問です。
上記関数の中に、上記よそのサイトのように罫線定義を入れたら、罫線を描画できますか。
できるならセル(y1,x1)に罫線を付けるコードの一例を書いて戴けませんか。
ここだけのコード追加で済まなくて、ややこし話になるんでしたら、改めて質問しなおします。
いつも面倒な話で恐縮です。
>下記はMicrosoft Visual Studio Community 2019を使いました 今回わざわざインストールされたようですね。 個々の設定情報のおかげで、次の3つのファイルうまくできました。 helloc.exe hellocli.dll hellocs.dll お手数おかけしました。 ありがとうございました。 「Microsoft Visual Studio Community 2019」が無料でダウンロードできること、知らない人も多いでしょうね。 私がそうでしたから。
下記はMicrosoft Visual Studio Community 2019を使いました 自分でビルドする方へ helloc.exeのビルド Microsoft Visual Studio Community 2019を起動する 新しいプロジェクトの作成 C++ Windows コンソール 空のプロジェクト 次へ プロジェクト名 helloc 場所 例D:\temp 作成 プロジェクト 新しい項目の追加 Visual C++ コード C++ ファイル(.cpp) ファイル名 helloc.cpp 追加 helloc.cppをコピペする プロジェクト helloc のプロパティ 構成 Debug 構成プロパティ 詳細 文字セット マルチバイト文字セットを使用する C/C++ コード生成 ランタイム ライブラリ マルチスレッド デバッグ (/MTd) 言語 準拠モード いいえ プリコンパイル済みヘッダー プリコンパイル済みヘッダーを使用しない リンカー 全般 インクリメンタルリンクを有効にする いいえ(/INCREMENNTAL:NO) 適用 構成 Release 構成プロパティ 全般 文字セット マルチバイト文字セットを使用する C/C++ コード生成 ランタイム ライブラリ マルチスレッド (/MT) 言語 準拠モード いいえ プリコンパイル済みヘッダー プリコンパイル済みヘッダーを使用しない リンカー 全般 インクリメンタルリンクを有効にする いいえ(/INCREMENNTAL:NO) OK ビルド バッチビルド Debug|x86 Release|x86 両方ともチェック リビルド 2 正常終了、0 失敗、0 スキップ D:\temp\helloc\Releaseにhelloc.exeがビルドされる
下記はMicrosoft Visual Studio Community 2019を使いました 自分でビルドする方へ hellocs.dllのビルド Microsoft Visual Studio Community 2019を起動する 新しいプロジェクトの作成 C# Windows ライブラリ クラスライブラリ(.Net Framework) 次へ プロジェクト名 hellocs 場所 例D:\temp フレームワーク .Net Framework 3.5 作成 ソリューション エクスプローラー Class1.csの名前を hellocs.csと変更する テンプレートを削除し hellocs.csをコピペする プロジェクト hellocs のプロパティ ビルド 構成 Debug 構成 Release 両方とも アンセーフコードの許可 をチェック ビルド バッチビルド Debug Release 両方ともチェック リビルド 2 正常終了、0 失敗、0 スキップ D:\temp\hellocs\hellocs\bin\Releaseにhellocs.dllがビルドされる hellocli.dllのビルド Microsoft Visual Studio Community 2019を起動する 新しいプロジェクトの作成 C++ Windows ライブラリ ダイナミック リンク ライブラリ(DLL) 次へ プロジェクト名 hellocli 場所 例D:\temp 作成 ソリューション エクスプローラー ソースファイル dllmain.cppの名前を hellocli.cppと変更する テンプレートを削除し hellocli.cppをコピペする プロジェクト hellocli のプロパティ 構成 Debug 構成プロパティ 詳細 共通言語ランタイム サポート 共通言語ランタイム サポート (/clr) 文字セット マルチバイト文字セットを使用する C/C++ コード生成 ランタイム ライブラリ マルチスレッド デバッグ DLL (/MDd) 言語 準拠モード いいえ プリコンパイル済みヘッダー プリコンパイル済みヘッダーを使用しない リンカー 全般 インクリメンタルリンクを有効にする いいえ(/INCREMENNTAL:NO) 適用 構成 Release 構成プロパティ 詳細 共通言語ランタイム サポート 共通言語ランタイム サポート (/clr) 文字セット マルチバイト文字セットを使用する C/C++ コード生成 ランタイム ライブラリ マルチスレッド DLL (/MD) 言語 準拠モード いいえ プリコンパイル済みヘッダー プリコンパイル済みヘッダーを使用しない リンカー 全般 インクリメンタルリンクを有効にする いいえ(/INCREMENNTAL:NO) OK ソリューション エクスプローラー 参照をクリック プロジェクト 参照の追加 参照 D:\temp\hellocs\hellocs\bin\Release\hellocs.dllを追加 OK ビルド バッチビルド Debug|x86 Release|x86 両方ともチェック リビルド 2 正常終了、0 失敗、0 スキップ D:\temp\hellocli\Releaseにhellocli.dllがビルドされる
前回の投稿はMicrosoft Visual Studio 2008を使いました Microsoft Visual Studio 2008で警告だったところが Microsoft Visual Studio Community 2019でエラーになります helloc.cpp hellocli.cpp をなおしました
この掲示板の下のほうに "自分でビルドする方へ" があります VS2019では確認していません 自分でビルドする方へ hellocs.dllのビルド Microsoft Visual Studio 2008を起動する ファイル 新規作成 プロジェクト Visual C# クラスライブラリ プロジェクト名 hellocs 場所 例D:\temp OK Class1.csの名前を hellocs.csと変更する テンプレートを削除し hellocs.csをコピペする プロジェクト hellocs のプロパティ ビルド 構成 Debug 構成 Release 両方とも アンセーフコードの許可 をチェック ビルド バッチビルド Debug Release 両方ともチェック リビルド エラー 0、警告 0 警告があっても動作するが理解の上で使用すること 2 正常終了、0 失敗、0 スキップ D:\temp\hellocs\hellocs\bin\Releaseにhellocs.dllがビルドされる hellocli.dllのビルド Microsoft Visual Studio 2008を起動する ファイル 新規作成 プロジェクト Visual C++ Win32 Win32コンソールアプリケーション プロジェクト名 hellocli 場所 例D:\temp OK 次へ DLL 空のプロジェクト をチェック 完了 プロジェクト 新しい項目の追加 Visual C++ コード C++ ファイル(.cpp) ファイル名 hellocli.cpp 追加 hellocli.cppをコピペする プロジェクト hellocli のプロパティ 構成プロパティ 構成 Debug 構成プロパティ 全般 文字セット マルチバイト文字セットを使用する 共通言語ランタイム サポート 共通言語ランタイム サポート (/clr) C/C++ コード生成 ランタイム ライブラリ マルチスレッド デバッグ DLL (/MDd) リンカ 全般 インクリメンタルリンクを行わない 適用 構成 Release 構成プロパティ 全般 文字セット マルチバイト文字セットを使用する 共通言語ランタイム サポート 共通言語ランタイム サポート (/clr) C/C++ コード生成 ランタイム ライブラリ マルチスレッド DLL (/MD) リンカ 全般 インクリメンタルリンクを行わない 共通プロパティ Framework と参照 新しい参照の追加 参照 D:\temp\hellocs\hellocs\bin\Release\hellocs.dllを追加する OK ビルド バッチビルド Debug Release 両方ともチェック リビルド エラー 0、警告 0 警告があっても動作するが理解の上で使用すること 2 正常終了、0 失敗、0 スキップ D:\temp\hellocli\Releaseにhellocli.dllがビルドされる helloc.exeのビルド Microsoft Visual Studio 2008を起動する ファイル 新規作成 プロジェクト Visual C++ Win32 Win32コンソールアプリケーション プロジェクト名 helloc 場所 例D:\temp OK 次へ コンソールアプリケーション 空のプロジェクト をチェック 完了 プロジェクト 新しい項目の追加 Visual C++ コード C++ ファイル(.cpp) ファイル名 helloc.cpp 追加 helloc.cppをコピペする プロジェクト helloc のプロパティ 構成プロパティ 構成 Debug 構成プロパティ 全般 文字セット マルチバイト文字セットを使用する C/C++ コード生成 ランタイム ライブラリ マルチスレッド デバッグ (/MTd) リンカ 全般 インクリメンタルリンクを行わない 適用 構成 Release 構成プロパティ 全般 文字セット マルチバイト文字セットを使用する C/C++ コード生成 ランタイム ライブラリ マルチスレッド (/MT) リンカ 全般 インクリメンタルリンクを行わない OK ビルド バッチビルド Debug Release 両方ともチェック リビルド エラー 0、警告 0 警告があっても動作するが理解の上で使用すること 2 正常終了、0 失敗、0 スキップ D:\temp\helloc\Releaseにhelloc.exeがビルドされる
当方、基本的なことが、まだ理解できてないんですが、 今回、次の3つのソースコードと、2つのdllファイルがあります。 (1) helloc.cpp (2) hellocli.cpp (3) hellocs.cs (4) hellocli.dll (5) hellocs.dll Q1:今回(1)は何のために添付されてるんですか。 helloc.exeを作って、そこから、(4)や(5)の動作を確認するためですね。 Q2:VS2019でhelloc.exeを作る場合、、 「空のプロジェクト C++ Windows コンソール」のテンプレートでいいんですか。 その場合、ソースファイルとして、helloc.cppを追加すればいいのかと思ったら、ちがうようですね。 ソースコードの仕様が違ってるようなエラーが出ます。 Q3:(4),(5)を作成するまで、VS2019のどのテンプレートをどんな順番に使うことになりますか。 聞いても私には分からないかもしれませんが。 C++は、VS2005辺りで、exeやdllをいくつか作った経験しかありませんし、C#は、もっと知らないです。 すみません。
アセンブリ名のついたサブフォルダに置くとは たとえば D:\temp\ARAGOPRO.EXEであれば D:\temp\hellocs\hellocs.dllとなる kamitaniさんの言うように仕様のようです 投稿した後そのまま 再読み込みすると 再投稿されるようです
今回の3つほどのプログラム、自分で再現しようかと、ソースコードを眺めはじめたところです。 が、私には難しかったです。 >アセンブリ名のついたサブフォルダ その言葉さえ、何を指すのか分かりません。 とりあえず、実行ファイルの場所にすると、覚えておきます。
前回投稿の "hellocli.dllのカレントディレクトリがARAGOPRO.EXEの場所になるので・・" は間違いです(意味不明でした) C#のDLLは "実行ファイルと同じフォルダまたはアセンブリ名のついたサブフォルダに置く" が正解のようです
いつも早々のレス、ありがとうございます。 >ARAGOPRO.EXEのフォルダにhellocs.dllがなければ そのとおりでした。 同一フォルダーに入れたら、OKでした。 いままで、自分で用意したdllは、*.prgと同じフォルダーに入れて使ってましたけどね。 仕様が変わったと思うことにします。 とにかく、一歩前進しました。 これから、C#のdllについて研究します。 ほとんど理解してないので、またよろしくお願いします。
hellocli.dllのカレントディレクトリがARAGOPRO.EXEの場所になるので ARAGOPRO.EXEのフォルダにhellocs.dllがなければ hellocli.dllがhellocs.dllをロードできません aragowのSET PATH TOなどでパスを指定しても hellocli.dllのパスには反映されないようです *merrybelle.sub.jpから *hellocli.dll(C++/CLIのDLL) *hellocs.dll(C#のDLL) *をダウンロードする *aragowからhellocli.dllを経由してhellocs.dllのメソッドを呼び出す EXTERN CDECL CINT loaddll(CVOID) hellocli.dll EXTERN CDECL CSTRING methodcli1(CSTRING,CSTRING,CSTRING) hellocli.dll EXTERN CDECL CSTRING methodcli2(CSTRING,CSTRING,CSTRING,CSTRING) hellocli.dll if loaddll()=-2 ? 'hellocs.dllをロードできません' return endif store 'Hello world' to str1 store 'ハローワールド' to str2 store space(100) to str3 ? methodcli1(str1,str2,str3) store 'グッドバイワールド' to str3 store space(100) to str4 ? methodcli2(str1,str2,str3,str4)
早々のレスありがとうございました。 ARAGOW上でDLLがエラーしてるようなので、お尋ねします。 ARAGOWやVS2019をインストールしているPCの1フォルダー D:\ARAGOW\_ARG-CS-DLL\ 内に以下のファイルを集めました。 helloc.cpp helloc.exe hellocli.cpp hellocli.dll hellocs.cs hellocs.dll TEST1.PRG TEST2.PRG TEST3.PRG hellocRun0.bat hellocRun1.bat ARAGOPRO.EXE - ショートカット.lnk ARAGOW上で、ご提示のブログラムを実行すると、 ? methodcli1(str1,str2,str3) とか、 ? methodcli2(str1,str2,str3,str4) の行で、エラーが発生するらしく、ARAGOW自体の画面が閉じてしまいます。 部分的に実行すると、こうです。 =================================================================================== *TEST2.PRG SET TALK OFF CLEAR DO TEST CANCEL *------------------------------------------------------------------------------- PROCEDURE TEST EXTERN CDECL CSTRING methodcli1(CSTRING,CSTRING,CSTRING) hellocli.dll EXTERN CDECL CSTRING methodcli2(CSTRING,CSTRING,CSTRING,CSTRING) hellocli.dll store 'Hello world' to str1 store 'ハローワールド' to str2 store space(100) to str3 ? "str3=",str3,"LEN(str3)=",LEN(str3) && この行は表示されますが・・・ ? methodcli1(str1,str2,str3) && ここでエラーが発生してるようで ? "str3=",str3,"LEN(str3)=",LEN(str3) && この行表示前に、ARAGOW.EXEが終了してしまいます。 *store 'グッドバイワールド' to str3 *store space(100) to str4 *? methodcli2(str1,str2,str3,str4) *? "str4=",str4 RETURN =================================================================================== hellocli.dllやhellocli.dllのファイル名を変更すると、EXTERN の行でエラー停止しますから、DLLは読み取ってます。 こうやってみても同じです。 =================================================================================== *------------------------------------------------------------------------------- PROCEDURE TEST EXTERN CDECL CSTRING methodcli1(CSTRING,CSTRING,CSTRING) hellocli.dll EXTERN CDECL CSTRING methodcli2(CSTRING,CSTRING,CSTRING,CSTRING) hellocli.dll store 'Hello world' to str1 store 'ハローワールド' to str2 store space(100) to str3 *? "str3=",str3,"LEN(str3)=",LEN(str3) && この行は表示されますが・・・ *? methodcli1(str1,str2,str3) && ここでエラーが発生してるようで *? "str3=",str3,"LEN(str3)=",LEN(str3) && この行表示前に、ARAGOW.EXEが終了してしまいます。 store 'グッドバイワールド' to str3 store space(100) to str4 && こちらも同様にでエラーが発生してるようで、ここでARAGOW.EXEが終了してしまいます。 ? methodcli2(str1,str2,str3,str4) ? "str4=",str4 RETURN =================================================================================== 次に、 helloc.exeというのがあったので、起動してみました。 =================================================================================== REM hellocRun0.bat echo off helloc.exe > hellocRun0画面.txt pause =================================================================================== <出力画面> Hello world ハローワールド Hello world ハローワールド グッドバイワールド =================================================================================== REM hellocRun1.bat echo off helloc.exe aaa bbb ccc > hellocRun1画面.txt pause =================================================================================== <出力画面> aaa bbb aaa bbb ccc ●C#以前に、C++/CLIのDLLがトラブルみたいです。 お分かりでしょうか。
C#のEXEでaragowのDBFファイルを読み書きできるので C#のEXEだけですむこともあるでしょう C#のEXEをaragowのrunで実行しデータをDBFファイルに保存すれば そのDBFファイルをaragowで使うことができます 下記はC#のDLLをaragowから呼び出してその戻り値をaragowで使うサンプルです *merrybelle.sub.jpから *hellocli.dll(C++/CLIのDLL) *hellocs.dll(C#のDLL) *をダウンロードする *aragowからhellocli.dllを経由してhellocs.dllのメソッドを呼び出す EXTERN CDECL CSTRING methodcli1(CSTRING,CSTRING,CSTRING) hellocli.dll EXTERN CDECL CSTRING methodcli2(CSTRING,CSTRING,CSTRING,CSTRING) hellocli.dll store 'Hello world' to str1 store 'ハローワールド' to str2 store space(100) to str3 ? methodcli1(str1,str2,str3) store 'グッドバイワールド' to str3 store space(100) to str4 ? methodcli2(str1,str2,str3,str4)
管理人 様 前回「カスタマバーコード」ではお世話になりました。 最近、VS2019 C#コンソール・アプリ(.NET Freamwork) の自作プログラムを補助的に使ってます。 今度は、こちらのお話の続きです。 >投稿日:2020年7月10日 >ARAGOWからC++/CLIのDLLを経由して >C#のDLLを呼び出すことができます この意味がよくわからないのですが、上記C#で作ったDLLプログラムをARAGOWから呼び出せるということでしょうか。 どこかのWeb上に、簡単な事例記事など、ないでしょうか。 全然急いでおりません。 よろしくどうぞ。
今回のトラブルは[80]の EXTERN CINT YubinBarcode(CSTRING,CSTRING,CSTRING) YuBar.dll これで、100%解決しています。 ありがとうございました。 [85][86]はなんのことかよくわかりませんが、不要です。 カスタマーバーコード、理想的に記録処理できています。 本件解決済ですから。 いままた別の課題あるんですが、今度また具体的に相談させていただきます。
nukidasi.prg カスタマバーコードに必要な文字情報を抜き出す 制御コードは次に示すASCIIコードで置き換える 制御コード ASCIIコード CC1 → a CC2 → b CC3 → c CC4 → d CC5 → e CC6 → f CC7 → g CC8 → h カスタマバーコードをBMPファイルで出力する
*カスタマバーコード
EXTERN CDECL CINT yubar01(CSTRING,CSTRING) overlayprn001.dll
*コード(文字列),ファイル名
store yubar01("10000001-2-3A101","temp@@1.bmp") to error01
? error01
誤解させてすみません。 今回のトラブルではありません。 ARAGOWのブログラムデバッグ中の一般的なトラブルの話でした。 ブログラムの記述がどこにも間違いないのに、エラーになることがたまにあります。 そのパターンの1つでよくあるケースが全角スペースです。 目に見えないから、気が付かないのです。 それとは別に最後まで理由が不明だったというケースがあります。 たぶん何かのはずみで、文字表示されない制御コードが混入したりしたんだと推測してます。 そういうケースでは、不要空白行を消したり、再度文字入力しなおしたりしたらOKになるのです。(私の場合) *.PROファイルを一旦消して、再実行したらOKになることもあります。 原因不明のトラブルを時々経験してます、という話のつもりでした。 丁寧なアドバイスありがとうございました。
*"全角スペースがエラーになる"について *下記のようにaddressをARAGO側で処理するのではどうですか? address0='東京都 1丁目2の3 a-101' set language to japanese store len(address0) to n store 1 to c store '' to address1 do while c<=n set language to japanese store subs(address0,c,1) to check0 store subs(address0,c+1,1) to check1 set language to american if len(check0)=1 .and. ((asc(check0)>=48 .and. asc(check0)<=57) .or. ; (asc(check0)>=65 .and. asc(check0)<=90) .or. (asc(check0)>=97 .and. asc(check0)<=122)) if asc(check0)>=97 .and. asc(check0)<=122 store chr(asc(check0)-32) to check0 endif if len(check1)<>1 .or. .not. ((asc(check1)>=48 .and. asc(check1)<=57) .or. ; (asc(check1)>=65 .and. asc(check1)<=90) .or. (asc(check1)>=97 .and. asc(check1)<=122)) store address1+check0+'-' to address1 else store address1+check0 to address1 endif endif store c+1 to c enddo store len(address1) to n if subs(address1,n,1)='-' store subs(address1,1,n-1) to address1 endif ? address1
出来ました! 過日、自分で試してたときから、 YubinBarcode(postno,address,outcode) これに相当する行で「YubinBarcodeがありません」という意味のエラーになってました。 C#プログラムの中では、 string sOutCode = outCode.ToString(0, 23); このように、普通の文字列に変換しないといけないから、StringBuilder は、特別な変数なのだと諦めてました。 今回も最初、同じ現象になってましたが、前後の文字列を書き換えたりしてる内に直りました。 (ごくまれに空白行を消したら直ることがありますね。全角スペースがエラーになることは度々ですが、そうじゃないパターンでも。) outcodeは、23バイト固定なので先頭の23文字を取り出すだけでOKでした。 とにかくできました。 早々のレス、ありがとうございました。
ARAGOWからC++/CLIのDLLを経由して C#のDLLを呼び出すことができます
EXTERN CINT YubinBarcode(CSTRING,CSTRING,CSTRING) YuBar.dll store '1000000' to postno store '東京都' to address store space(200) to outcode YubinBarcode(postno,address,outcode) ? trim(outcode) で動きませんか?
管理人様
こちらの掲示版、まだサポートされてますでしょうか。
私、数年前、ARAGOWの方の掲示板で、DLLについていろいろご教授いただいきました。
当方依然、ARAGOWで社内業務用アプリを粗製乱造しております。
今回郵送物の宛名にカスタマーバーコードを印刷することになって、市販ソフト(*1)を購入しました。
自作できそうでしたが「早くやりたい。」と言われたので。
*1:https://www.rolan.co.jp/shouhin/s_yubar.html
購入した市販ソフトには、開発者向けに VS C#のサンプルプロクラムやYuBar.dllが付いてました。
私は、そのサンプルプロクラムを改造して、名簿データのDBFファイルから直接バーコードを生成するようにできました。C#のEXEファイルです。
YuBar.dllは、ARAGOWのEXTERNの記述で利用できませんでした。
今回お尋ねしたいのは、それができるようにならないかということです。
YuBar.dllの仕様はこれです。
---------------------------------------------------
[DllImport(YuBarDllName, EntryPoint="YubinBarcode")]
public static extern int YubinBarcode(
string postNo,
string address2,
StringBuilder outCode);
---------------------------------------------------
C#のプログラムの中で、postNo(郵便番号)とaddress2(住所)を与えてやると、バーコードフォントの文字列(outCode)が返ってくるという仕様です。
ARAGOWのEXTERNで使えなかったのは、outCodeがただの文字列でなく、StringBuilder だからでしょうね。
それだけの問題ではなく、そもそもARAGOW用の初期のDLLと、最近のDLLは仕様が違ってるんでしょうか。
dumpbin.exe というツールで見るとこうなります。
---------------------------------------------------
Dump of file YUBAR.DLL
File Type: DLL
Section contains the following exports for YUBAR.dll
00000000 characteristics
577DF767 time date stamp Thu Jul 07 15:32:07 2016
0.00 version
1 ordinal base
40 number of functions
12 number of names
ordinal hint RVA name
1 0 00005BA0 CnvPNCB
2 1 00005B80 ConvAreaNo
21 2 00001000 YubarDraw
23 3 00001120 YubarDrawPixcel
22 4 00001A00 YubarDrawWhole
30 5 00003790 YubarExportBMP
31 6 000037E0 YubarExportBMPAtColorBit
25 7 000011F0 YubarGetDrawSize
26 8 00001300 YubarGetDrawSizePixcel
40 9 00005C30 YubarSetClipBoard
20 A 00003E10 YubarVerify
3 B 00005B60 YubinBarcode
---------------------------------------------------
いま、前記のようにYUBAR.DLLを取り込んだC#の実行ファイル*.exeは出来てます。
C#でも、DLLファイルを作るプロジェクトがありますが、いまのプロジェクトを.dll用に変更したら、ARAGOWで利用可能なDLLファイルができるんでしょうか。
C#にこだわる必要はないんですが、少しわかったきたところなので。
お分かりでしたら、またアドバイスください。
全然急ぎませんから・・・。
返答ありがとうございます。 やはりサービスでは動かないのですね。 startup1.exeを利用させていただきます。 ありがとうございました。
前記変更しました 例http://192.168.0.200/aragoi/aragoi.exe?overlayprn.prg を http://192.168.0.200/aragoi/startup1.exe?overlayprn.prg とします
書き込みありがとうございます 例http://192.168.0.200/aragoi/aragoi.exe?overlayprn.prg はサービスで動きませんが WebサーバでEXE形式が実行可であるならば aragoi.exe?overlayprn.prgを実行するstartup1.exeで http://192.168.0.200/aragoi/startup1.exe とするとサービスでも動くようです startup1.exeをmerrybelleに置きました aragoi.exe overlayprn.prg overlayprn001.dll overlayjpeg001.dll startup1.exe を同じフォルダに置く サービスを有効にするには再起動が必要のようです
初めまして、いつも陰ながら利用させていただき、大変勉強になっております。
aragoiで印刷のoverlayprn001.dllを使って、PDFを作成してみたのですが、
apacheを手動でhttpd.exeを起動したり、prgをaragoのインタプリタで動かした時は正常にPDFCreaterでPDFファイルが作成されるのですが、httpd.exeをサービスに登録してプログラム実行するとエラーは出ないのですが、PDFCreaterが動作しません。
store createdc01("PDFCreator",0,0,0,0) to hdc
でhdcの値は毎回0以外の数値は返ってきているようです。
何が原因なのかわからず困っております。
解決法はありますでしょうか。
mail001.dllにバッファオーバーランの危険があり pop30.prgとmail001.dllをなおしました バッファオーバーランは地雷のようなもので 触れなければ何も起こらない 触れると致命的な問題が起こります
詳細にありがとうございます。 結構、プログラムの変更箇所が多くなりそうで 実行できていませんが、 テストできましたら ご報告させていただきます。 新しいmail001.dllで 最近、削除できない現象がなく そのまま続けています。 いつもありがとうございます。
pop3用のpop30.prgとmail001.dllを新しくしました このprg内でデータの取得をすると処理が頓挫し メール受信とメール削除ができない可能性があります 1 メール受信とメール削除はprgで一気に処理する SET ALTERNATE TO d:\temp\temp30.txt SET ALTERNATE ON ・・・ SET ALTERNATE OFF SET ALTERNATE TO とするとメールのヘッダ部とボディ部が temp30.txtにダウンロードされる 2 temp30.txtをもとにデータ取得の処理をする temp30.txtをみれば メールの Content-Type: charset= Content-Transfer-Encoding: もわかります
>メールをprgで受信する目的がわかりません
>メールの本文からデータを取得するのですか?
そうなんです。
データはまとめて手動でCSVで取れますが、リアルタイムでないので
受注自動 連絡メールを監視していて
メール内にある
受注番号:3125
注文者名:山田花子
などの「受注番号:」の行を拾っています
IDNO=rtri(subs(data,(at("受注番号:",data1)+11)))
なんて感じです。
メールは機械が出すので
文章の文句や字数は決まっています。
なんとかこの方法で取得したいのですが
問題が多いのでしょうか。
現在取得できずに消えないのは
これに関する原因でしょうか。
すみません、私には
メールの
Content-Type:
charset=
Content-Transfer-Encoding:
の理解がありませんでした。
メールをprgで受信する目的がわかりません メールの本文からデータを取得するのですか? データは添付ファイルでいいのでは? メールは多様で メールの Content-Type: charset= Content-Transfer-Encoding: がわからないと処理が難しいと思います
pop30ex.prgはつかっていませんでした。 pop30ex.prgで書き換えて実行すると ファイルが存在しません RECVJISHEADER.PRG となります。 なぜかわかりません。
pop30ex.prg で書き換えると ファイルが存在しません RECVJISHEADER.PRG となります。
レスポンスがそれであればokでしょう RSET(削除マークのリセット)を入れたのはレスポンスを確認するためです “文章になってない固定長の半角文字の羅列のメールです。”は base64がデコードされていないのです prgのバグです もしpop30ex.prgを使っているのならば pop30ex.prgは何度もなおしましたので新しいpop30ex.prgを使ってください STORE SPACE(32500) TO string01 if content=0 .and. charset=0 .and. encode=1 store subjisquoted(check01,string01) to check01 elseif content=0 .and. charset=1 .and. encode=1 store subutfquoted(check01,string01) to check01 elseif content=0 .and. charset=1 .and. encode=2 store subutf8bit(check01,string01) to check01 elseif content=0 .and. charset=1 .and. encode=3 store subutf8bit(check01,string01) to check01 else store subjisoneline(check01,string01) to check01 endi のところはSPACE(32500)となっていますか? メールのソースをみてエンコーディングがどうなっているか教えてください
レスポンス(?の内容)は +OK 28 125031 +OK +OK これが続いて、 最初が見れません wait で確認しても大丈夫でしょうか。 2回目も、すべて削除されました。
ありがとうございます。 結果を言うと 下記のプログラムのままだと 消えずに残っていましたが RSETを排除すると、サーバー占有バイトが0になりました。 これはオーダーのコピーのコピーを試しました。
DELEで削除マークされ RSETでリセットされ QUITで更新される テスト用のメールアドレスで 下記でレスポンス(?の内容)はどうなりますか? ************************************************************************** PROCEDURE pop301 *POP3サーバーに接続 store opensock(pop01,110,60) to sock if sock>0 STORE SPACE(1000) TO string01 STORE recvsockoneline(sock,string01) TO n ? SUBSTR(string01,1,n) sendjis(sock,'USER '+Username01+CHR(13)+CHR(10)) STORE SPACE(1000) TO string01 STORE recvsockoneline(sock,string01) TO n ? SUBSTR(string01,1,n) sendjis(sock,'PASS '+Password01+CHR(13)+CHR(10)) STORE SPACE(1000) TO string01 STORE recvsockoneline(sock,string01) TO n ? SUBSTR(string01,1,n) store 0 to mail01 sendjis(sock,'STAT'+CHR(13)+CHR(10)) STORE SPACE(1000) TO string01 STORE recvsockoneline(sock,string01) TO n ? SUBSTR(string01,1,n) store subs(string01,1,n) to check01 store val(subs(check01,4,len(check01)-3)) to mail01 if mail01>0 store 1 to mail02 do while mail02<=mail01 *メール削除 sendjis(sock,'DELE '+str(mail02)+CHR(13)+CHR(10)) STORE SPACE(1000) TO string01 STORE recvsockoneline(sock,string01) TO n ? SUBSTR(string01,1,n) store mail02+1 to mail02 endd endi *RSET sendjis(sock,'RSET'+CHR(13)+CHR(10)) STORE SPACE(1000) TO string01 STORE recvsockoneline(sock,string01) TO n ? SUBSTR(string01,1,n) sendjis(sock,'QUIT'+CHR(13)+CHR(10)) STORE SPACE(1000) TO string01 STORE recvsockoneline(sock,string01) TO n ? SUBSTR(string01,1,n) closesock(sock) endi RETURN ************************************************************************** 上記で *RSET * sendjis(sock,'RSET'+CHR(13)+CHR(10)) * STORE SPACE(1000) TO string01 * STORE recvsockoneline(sock,string01) TO n * ? SUBSTR(string01,1,n) とすると全メールが削除されますか?
補足すると、 注文があったときに、ヤフーショッピングから、弊社に来る受注お知らせメールは オーダー番号が割り振られるので、 お客様が同じものを2回買うと、2種のオーダー番号で2通メールが来ます。 したがって、ヤフーショッピングから来るメールに重複はないが 受け取ったメールが、サーバーから消えずに 再度受信した場合、 オーダー番号で重複を阻止するように プログラムすれば防げます、 しかし、消えないメールがどんどん貯まり サーバーが消えないメールで膨らみます。 *メール削除 * sendjis(sock,'DELE '+str(mail02)+CHR(13)+CHR(10)) * STORE SPACE(1000) TO string01 * STORE recvsockoneline(sock,string01) TO n * ? SUBSTR(string01,1,n) の部分で消えていなかったら、繰返しするような手法をとるのは まずいでしょうか。 さらに 消えていなかったら というチェックはどうすればいいでしょうか
補足すると、 注文があったときに、ヤフーショッピングから、弊社に来る受注お知らせメールは オーダー番号が割り振られるので、 お客様が同じものを2回買うと、2種のオーダー番号で2通メールが来ます。 したがって、ヤフーショッピングから来るメールに重複はないが 受け取ったメールが、サーバーから消えずに 再度受信した場合、 オーダー番号で重複を阻止するように プログラムすれば防げます、 しかし、消えないメールがどんどん貯まり サーバーが消えないメールで膨らみます。 *メール削除 * sendjis(sock,'DELE '+str(mail02)+CHR(13)+CHR(10)) * STORE SPACE(1000) TO string01 * STORE recvsockoneline(sock,string01) TO n * ? SUBSTR(string01,1,n) の部分で消えていなかったら、繰返しするような手法をとるのは まずいでしょうか。 さらに 消えていなかったら というチェックはどうすればいいでしょうか
重複か故意かは 連番をオーダー番号として ヤフーサイトが割り振るので 重複はあり得ません。 sleep 2 でもサーバーのメールが削除できないです うーん、困りました。
注文メールが重複することはあり得ることで この場合 間違えて2度送信されたのか 同じ物2品注文なのかがわかりませんね webでの注文ですと即座に自動返信メールが届きますので すぐに返信メールが届かないと再送信する人もいるのかな
沢山のアドバイスありがとうございます。 Yahoo ショッピングや、自社サーバーにお客様から注文を頂くと xx@xxx と xxcopy@xxx の2つにメールが来るように設定しています。 このうちxx@xxxのメール着信を 5分タイマーで mail001でチェックしています。 なので xx@xxxのメールは消しても コピーメールで記録は残っています。 今日は3件しか注文がなかったのですが sleep 2 でうまく消えています。 しかし5分タイマーで、受信したメール文は 仮のデーターベースにいったん保管後 受信完了後に 仮のデーターベースから 本受注データベースに加える前に 重複じゃないか、チェックは必要だと思います。 問題があり、たまに変なメールが混ざります。 文章になってない固定長の半角文字の羅列のメールです。 そんなメールの対策も必要かもしれません。 それが受信すると、それ以降削除できなくなるとか 何か弊害を疑います。
前記の補足 Message-IDのないメールもあるので Date: で
prgで未受信のメールのチェック方法について 前の書き込みではだめですね 前回受信のメール番号1のMessage-IDと 今回受信のメール番号1のMessage-IDと をチェックして 同じ場合は 前回受信済の次のメール番号から受信する 異なる場合は メール番号1から受信する でどうでしょう
sleep 秒 *メール削除 * sendjis(sock,'DELE '+str(mail02)+CHR(13)+CHR(10)) * STORE SPACE(1000) TO string01 * STORE recvsockoneline(sock,string01) TO n * ? SUBSTR(string01,1,n) のようにsleepを入れるといいかもしれませんが・・ prgでメール削除をしないほうがいいと思います sendjis(sock,'STAT'+CHR(13)+CHR(10)) STORE SPACE(1000) TO string01 STORE recvsockoneline(sock,string01) TO n ? SUBSTR(string01,1,n) store subs(string01,1,n) to check01 store val(subs(check01,4,len(check01)-3)) to mail01 でメールサーバーにあるメール数がわかるので 前回取得したmail01より今回が増えていれば 新しいメールがあるので 前回の次のメール番号から受信する 前回取得したmail01より今回が減っていれば 正規のメーラーで受信しサーバーのメールが削除された後に 新しいメールがあるので メール番号1から受信する 私にはよくわかりませんが 通販の自動返信メールはあくまで仮で 後で正式のメールが届くようです sendssl(ssl,'RCPT TO: <'+rcptto01+'>'+CHR(13)+CHR(10)) STORE SPACE(1000) TO string01 STORE recvssloneline(ssl,string01) TO n ? SUBSTR(string01,1,n) の下に sendssl(ssl,'RCPT TO: <'+送信済みメール確認用のメールアドレス+'>'+CHR(13)+CHR(10)) STORE SPACE(1000) TO string01 STORE recvssloneline(ssl,string01) TO n ? SUBSTR(string01,1,n) とBCCを追加して自動返信メールの記録を残す 担当者が 注文メールを正規のメーラーで受信し(この時に受信済メールを削除する) 自動返信メールの記録を確認して 正式の受注メールを送る などではどうでしょう prgでメール削除してしまうと何かの場合の対処が・・
受信した後に、サーバーから削除できない現象が 10件に1件くらい発生しています。 そのため、再度同じメール受信してしまい、重複するのです。 多くは消えるのですが、消えないメールが発生するときがあります。 何か、回避方法として試してみる事項はないでしょうか。 サーバーも受信後消えたときは0バイトですが、 消えないメールが残っているようです。 アドバイス頂けたらありがたいです。
正常送信は コメ47で頂いた 250 MAIL FROM:<xxx@xxx.ne.jp> OK 250 RCPT TO:<xxx@xxx.ne.jp> OK があれば正常送信したと判断するプログラムを 追加しました。 キャンセルや、商品発送時の連絡など 状況に応じて 現在メール自動送信がうまくいってます。 別のメール送信アプリで送信していた時より かなり作業時間が短縮できました。 とっても楽になって、感謝しています。 相変わらず、アラゴは急に落ちます。 WIN10の64ビットでアラゴ32ビットを動かしていることも関係あるのでしょうか。 当方 アラゴ6.5です。
メールの送り方がいろいろあります 企業からのメールはHTMLメールが多いです mail002.dllでHTMLメールを送るときは Shift_JISでhtmlファイル <html> <head> ・・・ </head> <body> ・・・ </body> </html> を作る <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> などは入れなくてもok sendssl(ssl,'Content-Type: multipart/alternative; boundary="'+boundary01+'"'+CHR(13)+CHR(10)) ・・・ sendssl(ssl,'--'+boundary01+CHR(13)+CHR(10)) sendssl(ssl,'Content-Type: text/plain; charset="utf-8"'+CHR(13)+CHR(10)) ・・・ テキスト送信 ・・・ sendssl(ssl,'--'+boundary01+CHR(13)+CHR(10)) sendssl(ssl,'Content-Type: text/html; charset="utf-8"'+CHR(13)+CHR(10)) ・・・ htmlファイル送信 ・・・ とする メールクライアントでhtmlファイルが優先的に表示される
前記の改行後のピリオドについては 送信側で"."を".."に変換して送信すること とありました 結局mail002.dllのバグということになりますが 受信側の混乱もあるようです 前記の方法でも文字化けはないと思います
いろいろなメールでテストしてみると quoted-printableでエンコードした "0D0A." となるところの"."が抜け落ちて 文字化けしました 原因が Windows Live メールなのかメールサーバーなのか わかりませんが とりあえず "."を"=2E"にエンコードするように mail002.dllを変更しました 人(私も)を見たらバグと思え・・なんでしょうか
送信メールの確認についてですが (メールが届いたかどうかはわかりませんが・・) PROCEDURE sendmail01 の sendssl(ssl,'RCPT TO: <'+rcptto01+'>'+CHR(13)+CHR(10)) STORE SPACE(1000) TO string01 STORE recvssloneline(ssl,string01) TO n ? SUBSTR(string01,1,n) の下に sendssl(ssl,'RCPT TO: <'+送信済みメール確認用のメールアドレス+'>'+CHR(13)+CHR(10)) STORE SPACE(1000) TO string01 STORE recvssloneline(ssl,string01) TO n ? SUBSTR(string01,1,n) を追加するのはどうでしょう
mail001.dllとmail002.dllに メモリー解放のバグがありなおしました OpenSSL 1.1.1を使いました opensock()に3番目の引数タイムアウト(秒)を入れました バッファオーバーランは地雷を埋めるようなもので さわらなければ何も起きない 地雷にふれたときに異常が起こる aragowは適宜再起動を要するものなのか・・ aragowが落ちるのをprg側で対応するのは難しいようで 昔Mishinaさんのカキコミもありました
いつもありがとうございます。 正常診断の件 工夫してみます。
mail002.dllにバグ(文字化け)があり なおしましたので新しいものを使ってください 件名はSET LANGUAGE TO JAPANESEで 1行18文字以内にしてください(文字化けします) mail002.dllはメールサーバーと 通信するだけの機能で 220 msrg5031.rgserv.odn.ne.jp ESMTP Service ready 250-msrg5031.rgserv.odn.ne.jp 250-DSN 250-8BITMIME 250-PIPELINING 250-AUTH=LOGIN 250-AUTH LOGIN PLAIN 250 SIZE 20971520 334 VXNlcm5hbWU6 334 UGFzc3dvcmQ6 235 LOGIN authentication successful 250 MAIL FROM:<xxx@xxx.ne.jp> OK 250 RCPT TO:<xxx@xxx.ne.jp> OK 354 Start mail input; end with <CRLF>.<CRLF> 250 <5B4E3E7101599E4D> Mail accepted 221 msrg5031.rgserv.odn.ne.jp QUIT などとなれば正常です メールサーバーは 架空のメールアドレスでも受け付けます メールが届いたかどうかはわかりません
過去ログを探したのですが、うまく探れません 質問です メール正常送信は 何か返り値でエラー、送信不可を得ることができるのでしょうか それとも、最後まで流れれば、正常送信されたということでいいのでしょうか。 送れたのか、自分の指定値ミスがあったのかが 不安なのですが、いかがでしょうか。 送信内容は、文字化けも一切なく 快調です。
いつも、助けて頂いてありがとうございます。 さっそく使わさせていただきます。 EXTERN CDECL とする件も、 突然アラゴが落ちるのは、違うようです。 メモリの使用率をにらみながら、テストしていますが タスクマネージャーでメモリが 32Mを超えると、危ういです。 また報告できるようであれば、別件で書き込みます。
mail001.dllとmail002.dllをなおしましたが・・ メール送信において 長い件名(日本語で25文字を超えるくらい)の場合 iso-2022-jpで prgでは 漢字INあいう・・・漢字OUT漢字INかきく・・・漢字OUT と漢字OUT漢字INが連続するところがあります Windows Live メールでも同じです 本文で prgでは 漢字OUT漢字INが連続するところがあります Windows Live メールでは 漢字OUT漢字INが連続するところがありません 漢字OUT漢字INの連続を処理しないメーラーで prgでは文字化けするのかもしれません そのメーラーでは Windows Live メールでiso-2022-jpで送信した 長い件名のメールも文字化けするはずですが・・ この際 iso-2022-jp に別れを告げて utf-8 を使いましょう Windows Live メールに準じて 件名を1行23文字としました
ありがとうございます。 携帯でもマーク出なくなりました。 文字化けのお客様へのメールも ご協力いただいて、再度同じメールを送信したところ 正常でした。 これで、個別にメールソフト使わずに 自動返信が開始されました。 劇的に楽です。 ありがとうございました。
prgで iso-2022-jpで送信したときに (こちらは半角カタカナは全角カタカナに内部で強制的に変換している) 受信するメーラーによっては文字化けする件 原因がわかりました mail001.dllとmail002.dllをなおしますので すこし待ってください utf-8での送信でよければ とりあえず sendmail4.prgかsendmail5.prgで こちらは半角カタカナなども送れます
ご対応ありがとうございます。 試してみます。 一人のお客様から文字化けしていますと 連絡がありました、 パソコンで受けたメールのようです。 左目がアメーバとかいう病気になってしまい 静かにしていました。 折角のご連絡、拝見が遅れまして 申し訳ございません。
Windows Live メールに合わせて 件名を utf-8?B で 本文を Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable で送る SMTP over SSLのsendmail4.prg と SMTP STARTTLSのsendmail5.prg を作りました 半角カタカナなどもok
昔はiso-2022-jpだけでよかった 最近のメールのソースをみると 件名 iso-2022-jp?B? UTF-8?B? Shift_JIS?B? 本文 Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit Content-Type: text/html; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=Shift_JIS Content-Transfer-Encoding: base64 などがありました 携帯はUTF-8ですから これからは prgでメールを送信する場合は 件名も本文もUTF-8にしたほうがいいようです prgでメールを受信する場合は 件名が iso-2022-jp?B? UTF-8?B? Shift_JIS?B? の3とおり 本文が Content-Type: text/plain Content-Type: text/html の2とおりと charset="iso-2022-jp" charset="utf-8" charset=Shift_JIS の3とおりと Content-Transfer-Encoding: 7bit Content-Transfer-Encoding: 8bit Content-Transfer-Encoding: quoted-printable Content-Transfer-Encoding: base64 の4とおり に対応することになります
タイトル11文字目のつぎにマークが出るのと ----> 12文字目でした。
>“メモ帳で作った”テキストファイルでも >マークが出るのか 今までの携帯メールでは同じマークが出ますが、 >②メーラーを変えて >受信し確認する でほかのパソコンメーラーでは出ませんでした。 6つ前で「解決しました」と掲示板の書き込みをしたように ヤフーメールアドレスだと問題なかったというのは ヤフーのサーバーならOKではなくて、ヤフーのメーラーで受けたからマークが出なかったようです。 したがって、携帯用のメーラーで受けた時だけ タイトル11文字目のつぎにマークが出るのと、 本文にランダムに出ますが、 ほかのメーラーでは出ないので、自分の携帯メーラーの原因です。 お騒がせいたしました、このまま実用に顧客に流してみましたが 今のところ、障害の連絡はありません。 ありがとうございました。
“メモ帳で作った”テキストファイルでも マークが出るのか マークが出る“送信するテキストファイル”を バイナリエディタで開いて “余分なコード”があるのかどうか などでしょうか
>件名でなのか >本文でなのか >どちらでもなのか・・ どちらもです。 本文は12文字ごとではありません。 >①prgとWindows Live メールなどで >送信し確認する メモ帳で送信するテキストファイルを開いて Ctrl+cでコピーして WINDOWS10の標準のメールソフトで Ctrl+Vで張り付けて 送信したところ マークは出ませんでした。 >③サーバーを変えて >送信し確認する 送信先を変えて、ヤフーにしたところ、マークは出ませんでした。 >②メーラーを変えて >受信し確認する テストできましたら報告します。
話が件名になってきています 最初のカキコミに“タイトルにも出ます” とありますが この問題は 件名でなのか 本文でなのか どちらでもなのか・・ 同じメールを ①prgとWindows Live メールなどで 送信し確認する ②メーラーを変えて 受信し確認する ③サーバーを変えて 送信し確認する などでどこに問題があるのか わかりませんか? だだ“③サーバーに問題がある” はありえないと思いますが・・
chr(9) -- chr(32)は結果は同じでしたが 件名12文字ですと、マークは出現しません。 12文字以上は送れないのでしょうか
以前のカキコミのとおり 件名の送信は “MIMEの規定通りにSET LANGUAGE TO JAPANESEで12文字以下に設定しなおしてください” SET LANGUAGE TO JAPANESE if len(Subject01)<=12 else また sendssl(ssl,CHR(9)) とタブで区切って送信していますが sendssl(ssl,CHR(32)) とスペースで区切って送信すると どうですか? SMTP over SSLの場合はsendmail2.prg SMTP STARTTLSの場合はsendmail3.prg を再ダウンロードして試してください
解決しました! メールサーバーを変えたら解決しました。 ヤフーメールに変えたら出ませんでした。 でも現在契約サーバーだと、必ず出ます。 もう少しテストしてみます。
変な文字はFPUTで作っていない件名にも出ます。 q_S='●商品確保ご連絡●シャルル@ビスコンティから出荷準備のお知らせ' のタイトルで件名をセットして送信すると '●商品確保ご連絡●シャル◆ル@ビスコンティから出荷◆準備のお知らせ' になって受信されます。実際には上記すべてのひし形のなかに?があるマークで 同じ物が数か所に入ります。 上記件名の場合、入り込む場所は同じです。 テキストが同じものを送信した場合、同じ位置に入ります。 文末などではなく、1つの繋がったテキストの中です。 メモ帳で作ってテストしてみます。
ARAGOのFPUTS()で作ったテキストファイルに 余分なコードが入っているのでしょう メモ帳で作ったテキストファイル ではどうですか? FPUTS()を FWRITE()で文字+chr(13)+chr(10) とするとどうですか?
mail002.dllを使って、ARAGOのFPUT関数などで作ったテキストファイルを送信するのですが、元のファイル内にはないマークが、送信されると必ず出ます。 そのテキストマークは菱形の中に?マークが白抜き文字のあるマークで、その出現間隔は不規則で、文章途中に数か所でます。 タイトルにも出ます。そのマークを無視して飛ばして読めば伝わるのですが 何が原因か、同じような現象の方はいらっしゃいませんか。
xさんいつもお世話になります。 いぜんから問題なくWIN10でも使っているmail001.dllですが 現在受信用にMAIL001、送信用に002を組み込みました。 そういう使い方でいいのでしょうか。
自分でビルドする方は問題ないと思いますが mail002.dllのOpenSSLのバージョンが古く ほとんど使えないので 新しいOpenSSLでリビルドしました 新しいmail002.dllを使ってください http://www2.odn.ne.jp/merrybelleにおいてある 他のdllも随時修正しています
mail002.prg -> sendmail2.prg でした
mail002.prg -> sendmail2.prg でした
ありがとうございます! いとも簡単に、あっさり、送信OK、メールも届きました。完璧です。 さっそく自動返信プログラムに組み込みます。 以前数年前にmail001を利用さえていただいておりましたが 受信はうまく使いこなせていたのですが、送信ができず メールソフトで返信していました。 お名前がないので、どなたか存じませんが 大変ありがとうございました。 mail002.prg は どこが違うのでしょう 認証方式?でしょうか
ポート465と書いてあるので sendmail2.prg ではどうですか?
補足です 過去ログに従って mail002をsendmail3.prg のサンプルプログラムでも試しましたが、同じ結果でした
mail001.dllの送信サンプルを使っての質問です。 SMTPサーバー名を入れ、ポート465、 認証をパスワードともに入れて、送信テストしたところ、 正常終了しますがメールが送られてきません。 どのようなチェックを試みると良いのでしょうか。
現役で頑張っています。店舗は6店から2店舗に減って、それでもアラゴPOSレジで、WIN10にして頑張っています。昨年より通販を始めてPOSレジの機能に機能を追加しています。xさんに作って頂いたdirectprn001.dll, あれはほんとに大幅にシステムが改善され、今でも活躍しています。ありがとうございました。 現在通販の機能で以前作られたPOP3メール送受信のdllを追加する計画で、ここの掲示板のURLが見つかったので、読ませていただいています。 EXTERN CDECL の件、ありがとうございます。 さっそく試します。 大変知識が弱いので、正しいかわかりませんが、下記の例ように EXTERN と CINT などの間にCDECLを挿入すると考えればいいでしょうか。 試してみます。
色々アドバイス有難うございます。 xさんのDLLは幅広い活用が期待できます。 今後も利用させて頂きますのでよろしくお願い致します。
*sample.prg(aragowで実行します)
*http001.dllを使います
*テキストファイルを受信する場合
EXTERN CDECL CINT opensock(CSTRING,CINT) http001.dll
EXTERN CDECL CINT sendsock(CINT,CSTRING) http001.dll
EXTERN CDECL CINT recvsockoneline(CINT,CSTRING) http001.dll
*4番目の引数はタイムアウト(秒)です
EXTERN CDECL CLONG recvsockfile(CINT,CSTRING,CLONG,CINT) http001.dll
EXTERN CDECL CINT closesock(CINT) http001.dll
EXTERN CDECL CSTRING shift_to_utf(CSTRING,CSTRING) encode001.dll
EXTERN CDECL CSTRING utf_to_shift(CSTRING,CSTRING) encode001.dll
EXTERN CDECL CSTRING urlencodeutf(CSTRING,CSTRING) encode001.dll
EXTERN CDECL CSTRING urldecode(CSTRING,CSTRING) encode001.dll
STORE 'merrybelle.sub.jp' TO domain01
STORE 'http://merrybelle.sub.jp/test.html' TO download01
store urlencodeutf(shift_to_utf(download01,space(200)),space(200)) to download01
set talk off
set language to american
set compatible off
clear
f01=fcreate('d:\temp\test.txt',0)
DO download
fclose(f01) &&fcreateしたら必ずfcloseする
PROCEDURE download
stor opensock(domain01,80) to sock
IF sock>0
sendsock(sock,'GET '+download01+' HTTP/1.0'+CHR(10))
sendsock(sock,CHR(10))
STORE 0 TO length01
do while .t.
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
if n<=0
exit
endi
* ? subs(string01,1,n)
IF n>15
IF SUBSTR(string01,1,15)='Content-Length:'
STORE VAL(SUBSTR(string01,16,n-15)) TO length01
endi
endi
endd
if n>=0
store 0 to n01
do while .t.
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
if n<0
exit
endi
store n01+n To n01
* ? utf_to_shift(subs(string01,1,n),space(200)) &&文字コードがUTF-8の場合
? subs(string01,1,n)
fwrite(f01,subs(string01,1,n)+chr(13)+chr(10))
endd
endi
closesock(sock)
ENDIF
RETURN
encode001.dllのアクティブ化コンテキストの生成に失敗しました となる場合はsystemのdllが足りないので 無償版のVisual C++ 2008 Express Editionなど をインストールしてみてください
スパム対策で 英語のみのメッセージとロシア語のメッセージ おなまえと削除キーが同一の場合 管理用に入力がある場合 は投稿できません
テストです
&1さんに誘導されてたどり着きました 早速、学習させていただきます ホームばっかりチェックしていてこの掲示板には気が付きませんでした ありがとうございます 引退の文字が見えますが小生も後期高齢者になり身辺の整理を少しづつ 進めています....あと25年は生きるつもりです...これから薬をもらいに医者に行きます
*RE[3]:.xlsxファイルをテキストファイルに自動変換 *下記でどうでしょう *excelcsv.prg *excelcli101.dll *excelcs101.dll *の2個のdllをARAGOPRO.EXEのフォルダに置く *エクセルがインストールされている EXTERN CDECL CINT opnexcel(CINT) excelcli101.dll &&excel.exeを開く 0は非表示 1は表示 EXTERN CDECL CINT opnbook(CSTRING) excelcli101.dll EXTERN CDECL CINT savebook(CSTRING) excelcli101.dll EXTERN CDECL CINT savebooku(CSTRING) excelcli101.dll &&Excel2016でUTF-8のCSVファイルがサポート EXTERN CDECL CINT clsbook(CVOID) excelcli101.dll &&xlsxファイルを閉じる EXTERN CDECL CINT clsexcel(CVOID) excelcli101.dll &&excel.exeを閉じる store 'D:\temp\test.xlsx' to file1 store 'D:\temp1\test.csv' to file2 *store 'D:\temp1\test.pdf' to file2 *store 'D:\temp1\test.xlsx' to file2 store opnexcel(1) to temp ? temp if temp <> 0 return endi store opnbook( file1) to temp ? temp if temp <> 0 clsexcel() return endi ? savebook( file2) clsbook() clsexcel()
*表示印刷がxlsxファイル(SHIFT-JISでもユニコードでも入ります)になりますが・・
*(ClosedXMLを使うexcel003u.prgのほうが速い)
*Unicode文字入りのD:\temp\data.xlsxをつくり
*excel004u.prg
*excelcli101.dll
*excelcs101.dll
*の2個のdllをARAGOPRO.EXEのフォルダに置く
*エクセルがインストールされている
EXTERN CDECL CINT opnexcel(CINT) excelcli101.dll
EXTERN CDECL CINT opnbook(CSTRING) excelcli101.dll
EXTERN CDECL CINT opnsheet(CSTRING) excelcli101.dll
EXTERN CDECL CSTRING rcell(CINT,CINT,CSTRING) excelcli101.dll
EXTERN CDECL CSTRING rcellu(CINT,CINT,CSTRING) excelcli101.dll
EXTERN CDECL CINT wcellstr(CINT,CINT,CSTRING) excelcli101.dll
EXTERN CDECL CINT wcellstru(CINT,CINT,CSTRING) excelcli101.dll
EXTERN CDECL CINT savebook(CSTRING) excelcli101.dll
EXTERN CDECL CINT clssheet(CVOID) excelcli101.dll
EXTERN CDECL CINT clsbook(CVOID) excelcli101.dll
EXTERN CDECL CINT clsexcel(CVOID) excelcli101.dll
set talk off
clea
store opnexcel(1) to temp
? temp
if temp <> 0
return
endi
store opnbook('D:\temp\data.xlsx') to temp
? temp
if temp <> 0
clsexcel()
return
endi
? opnsheet('sheet1')
store ltrim(rcellu(1,1,space(100))) to utf01
? utf01
clssheet()
clsbook()
store opnbook('D:\temp\test.xlsx') to temp
? temp
if temp <> 0
clsexcel()
return
endi
? opnsheet('sheet1')
wcellstru(10,1,utf01)
? savebook('D:\temp\test.xlsx')
clssheet()
clsbook()
clsexcel()
run c:\program files (x86)\microsoft office\root\office16\excel.exe d:\temp\test.xlsx
だれでもいつかは引退ですね 私は新聞の詰碁詰将棋などで楽しんでいます いまさらですがむかしinabaさんが C#でdll・・ Aragoでそのdllが呼べる? の件ですがラッパーdll経由で Aragoで呼べます
xさん、ごぶさたです。DBUSERの掲示板でのご活躍、拝見していました。 >私のdllを呼ぶときはEXTERN CDECLを使ってください >kourogiさんinabaさん >もしここのdllを使っていましたら >EXTERNをEXTERN CDECLとなおしてください 了解しました。 最近、めっきりaragoを使う機会がなくなりました。もう、化石みたいな状態です。
自分でビルドする方へ(追加) hellocli.dllのビルドでは前記に加えて プロジェクト hellocliのプロパティ 構成プロパティ 構成 Debug 全般 文字セット マルチバイト文字セットを使用する 全般 共通言語ランタイム サポート 共通言語ランタイム サポート (/clr) C/C++ コード生成 ランタイム ライブラリ マルチスレッド デバッグ DLL (/MDd) 適用 構成 Release 全般 文字セット マルチバイト文字セットを使用する 全般 共通言語ランタイム サポート 共通言語ランタイム サポート (/clr) C/C++ コード生成 ランタイム ライブラリ マルチスレッド DLL (/MD) 適用 共通プロパティ 新しい参照の追加 参照 hellocs.dllを追加する 適用 とする
自分でビルドする方へ Microsoft Visual Studio 2008を起動する ファイル 新規作成 プロジェクト Visual C++ Win32 Win32コンソールアプリケーション プロジェクト名 例keybd001 場所 例d:\c++ ソリューション名 例keybd001 OK 次へ DLL 空のプロジェクトをチェック 完了 プロジェクト 新しい項目の追加 Visual C++ コード C++ ファイル ファイル名 例keybd001 追加 keybd001.cppをコピペする プロジェクト keybd001 のプロパティ 構成プロパティ 構成 Debug 全般 文字セット マルチバイト文字セットを使用する C/C++ コード生成 ランタイム ライブラリ マルチスレッド デバッグ (/MTd) 適用 構成 Release 全般 文字セット マルチバイト文字セットを使用する C/C++ コード生成 ランタイム ライブラリ マルチスレッド (/MT) 適用 リンカ 全般 インクリメンタルリンクを行わない OK ビルド バッチ ビルド すべて選択 リビルド エラー 0、警告 0 警告があっても動作するが理解の上で使用すること 2 正常終了、0 失敗、0 スキップ D:\c++\keybd001\Releaseにkeybd001.dllがビルドされる
スパム対策で 英語のみのメッセージとロシア語のメッセージ は投稿できません
aragowのEXTERN[CDECL]コマンドの使い方についてですが EXTERN CDECLとするとcdecl規約となるようで自作のdllなどを呼ぶときには EXTERN CDECLを使う EXTERNとするとstdcall規約となるようでWindows APIなどを呼ぶときには EXTERNを使う のようです 私のdllを呼ぶときはEXTERN CDECLを使ってください (スタックポインタがずれてaragowが落ちると思います) 以前にkourogiさんが“11時間使って、1~2度ほど落ちます”といっていましたが これも原因のひとつなのかもしれません kourogiさんinabaさん もしここのdllを使っていましたら EXTERNをEXTERN CDECLとなおしてください もうしわけありません
xlsxファイルの読み書きdll (1)com経由 ClosedXMLとcomコンポーネントによる excel001.dll excelcom001.dll サンプル excel001.prg calendar.prg ClosedXML.dll DocumentFormat.OpenXml.dll(microsoft) excel.exeとcomコンポーネントによる excel101.dll excelcom101.dll サンプル excel002.prg calendar1.prg Interop.Microsoft.Office.Interop.Excel.dll(microsoft) (2)C++/CLI経由 速い レジストリへの登録不要 dllをARAGOPRO.EXEと同じフォルダ置く ClosedXMLとC++/CLIによる excelcli001.dll excelcs001.dll サンプル excel003.prg calendar2.prg ClosedXML.dll excel.exeとC++/CLIによる excelcli101.dll excelcs101.dll サンプル excel004.prg calendar3.prg
xlsxファイルの読み書きdll xlsxファイルカレンダーのサンプル (1) ClosedXMLを使う 1秒かからない 読み書きだけで印刷はできない 動作は aragow→excel001.dll(c++のdll)→excelcom001.dll(c#のdll) →ClosedXML.dll→DocumentFormat.OpenXml.dll です ClosedXML.dll DocumentFormat.OpenXml.dll(microsoft) excel001.dll excelcom001.dll の4個のdll+calendar.prgをprgのフォルダに置く コマンドプロンプト管理者として実行するで RegAsm.exe excelcom001.dll /codebase としてexcelcom001.dllをレジストリに登録する もし"excelcom001.excelcom001"と同じ名前が登録されている場合は上書きされるので注意する エクセルなしでいい (2) excel.exeを使う 遅い 印刷ができる エラーのときexcel.exeのプロセスが残るのでタスクマネージャーで削除する 動作は aragow→excel101.dll(c++のdll)→excelcom101.dll(c#のdll) →excel.exe です Interop.Microsoft.Office.Interop.Excel.dll(microsoft) excel101.dll excelcom101.dll の3個のdll+calendar1.prgをprgのフォルダに置く コマンドプロンプト管理者として実行するで RegAsm.exe excelcom101.dll /codebase としてexcelcom101.dllをレジストリに登録する もし"excelcom101.excelcom101"と同じ名前が登録されている場合は上書きされるので注意する エクセルがインストールされている
2017年
書き込みありがとうございます 書き込みの年は?は 前の掲示板はODNのホームページサービスのもので投稿の年の表示設定ができないようです この掲示板はPHP+MySQLで作りました ODN 30MB 月額料金 500円 lolipop PHP+MySQL 50GB 月額料金 250円 かたやメガバイト かたやギガバイト
過去の書き込みは下記に移しました
☆☆☆ merrybelleの掲示板 ☆☆☆
皆さん、お気軽に書き込んでください。
DBXL掲示板から検索してたどり着きました。
xさんはやっぱりすごい方ですね。
初めてこちらへお邪魔しましたが、投稿の年はわざわざ表示していないのですか。
過去の分、ななめ読みしていたらいつのかわからなかったです。
charset=UTF-8に対応したpop30.prgとpop30ex.prgを作りました
SMTP over SSLの場合はsendmail2.prg、SMTP STARTTLSの場合はsendmail3.prgで
暗号化通信用にmeil002.dllを使います
以前のmail001を「認証なし」に特化して「認証あり」をmail002にしたという理解でOKですか?
mail001.dllを使ったsendmail(SMTP認証なし)は期待通りでした。mail002の方は環境を「認証なし」にしてますのでテストしてません。
mail001.dllを使ったpop3.prgでは接続はできますが、「if quoted=0」のところでエラー(変数未定義)が出ました。「if mail01>0」行の下に「quote=0」を入れたら成功しましたが、「quote=1」でも同じ結果でした。
また添付ファイルは本文の最後にエンコード?したような、ないような表記が・・。内容は以下のpop3exと同じです。
pop3ex.prgでは、添付ファイル(プレインテキスト)はダウンロードできましたが、本文の最後にやはり以下のように・・。
---- ここから -----
--*a*2*s*5*d*8*
Content-Type: application/octet-stream; name=hoge.prg
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=hoge.prg
KoOBgVuDi5GXkE1TTVRQlEaP2ILIgrWCxVBPUCBiZWZvcmUgU01UUILMj+qNhw0KKpbAmGaDgYFb
---- 以下省略 --
という結果でした。
おはようございます。
手動でダウンロードできました。これからゆっくり試してみます。
ワクワクします。
例http://www2.odn.ne.jp/merrybelle/mail002.dll
としてみたら
Nortonが
WS.Reputation.1
安全ではないので削除しましたと・・・
そうなのかぁ
月日の過ぎるのが早いです年のせい・・・
mail002.cpp
mail002.rc
mail002.dll
sendmail2.prg
sendmail3.prg
などは手動で
例http://www2.odn.ne.jp/merrybelle/mail002.dll
としてください
OpenSSLライブラリを使っています
xさん、お久しぶりです。xさんがユーザーグループの掲示板への書き込まれた少し前から過去ログなど見させていただいてました。
フィックス以前のhttp001.dllも再度テストしてみたりしてましたが、期待どおり動いてくれてました。新しいバージョンもちゃんと動きますが・・。
ところで、mail002.dllってどこにあるのでしょう? これまでもなかったような・・。
http001.dll
mail001.dll
mail002.dll
にバグがありなおしました
2016年
過去の書き込みは下記に移しました
☆☆☆ merrybelleの掲示板 ☆☆☆
皆さん、お気軽に書き込んでください。
自分でビルドする方へ
Microsoft Visual Studio 2008を起動する
ファイル 新規作成 プロジェクト
Visual C++ Win32 Win32コンソールアプリケーション
プロジェクト名 例keybd001
場所 例d:\c++
ソリューション名 例keybd001
OK
次へ
DLL
空のプロジェクトをチェック
完了
プロジェクト 新しい項目の追加
Visual C++ コード
C++ ファイル
ファイル名 例keybd001
追加
keybd001.cppをコピペする
プロジェクト keybd001 のプロパティ
構成プロパティ
構成 Debug
全般 文字セット マルチバイト文字セットを使用する
C/C++ コード生成 ランタイム ライブラリ マルチスレッド デバッグ (/MTd)
適用
構成 Release
全般 文字セット マルチバイト文字セットを使用する
C/C++ コード生成 ランタイム ライブラリ マルチスレッド (/MT)
適用
リンカ 全般 インクリメンタルリンクを行わない
OK
ビルド バッチ ビルド すべて選択 リビルド
エラー 0、警告 0 警告があっても動作するが理解の上で使用すること
2 正常終了、0 失敗、0 スキップ
D:\c++\keybd001\Releaseにkeybd001.dllがビルドされる
件名の文字数を根拠もなく25文字以下に設定していましたが“あaあaあaあaあaあaあaあaあaあa”という件名でテストしましたところ13文字以上でエラーとなりましたMIMEの規定通りにSET LANGUAGE TO JAPANESEで12文字以下に設定しなおしてください
色々とサポートして頂き誠にありがとうございます。
ある程度テストも終了したので、本番環境に組み込みます。
これで従来からのメールサーバー切り替えが実施できます。
感謝いたします。
書き込みありがとうございます
ご指摘のとおり“Subject の25文字以上入れるとカットされる”はバグです
長い件名はタブで区切って送信するのですがそのタブが抜けていました
prgなおしました
mail002.dll 再作成誠にありがとうございます。
新しいdllを使用しテスト行いました。
ついでに、to: 3箇所と cc: 2箇所 もソースに追加してテストしました。
問題なく動作しました。
メール送信エラーを確認するため、3箇所ぐらいリーターンコードも確認しエラーを返すようにしました。
後は、現行ソースに組み込み再テストします。
テストしてて気になったのは、Subject の25文字以上入れるとカットされることです。
現状問題ないので、時間のあるときに調べてみます。
ありがとうございました。
mail001.dll,mail002.dllではcharset=ISO-2022-JPとしているので半角カタカナは全角カタカナに変換しています
sendmail2.prg,sendmail3.prg,mail002.dll変えました。
STORE SPACE(1000) TO string01
STORE recvssloneline(ssl,string01) TO n
? SUBSTR(string01,1,n)
のセットを適正に入れないとSSL_readによるブロッキングが起こります。
誠にすいません、再テストしたらメール送信出来るようになりました。
後は、複数の送信先と、ccの対応が出来れば現行の置き換えが出来そうです。
もう少し色々使用してみて置き換えるようにします。
お手数お掛けしました。
早急な対応誠にありがとうございます。
テストを行ったところ次のようになりました。
sendmail3.prg
プロンプト
220 HK2PR01CA0026.outlook.office365.com Microsoft ESMTP MAIL Service ready at Sat, 10 Jan 2015 03:54:35 +0000
503 5.5.2 Send hello First
ssl前の認証がおかしそうなので、一部手直ししました。
sendmail3.prg 一部変更
EXTERN CINT sendjis(CINT,CSTRING) mail001.dll && 追加
IF sock>0
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
* 追加
sendjis(sock,'HELO localhost'+CHR(13)+CHR(10))
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
sendsock(sock,'STARTTLS'+CHR(13)+CHR(10))
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
store openctx() to ctx
store openssl(sock,ctx) to ssl
プロンプト
220 SG2PR01CA0026.outlook.office365.com Microsoft ESMTP MAIL Service ready at Sat, 10 Jan 2015 04:43:35 +0000
250 SG2PR01CA0026.outlook.office365.com Hello [XXX.XXX.XX.XXX]
220 2.0.0 SMTP server ready
250 SG2PR01CA0026.outlook.office365.com Hello [XXX.XXX.XX.XXX]
334 VXNICM5HBWU6
334 UGFZC3DVCMQ6
235 2.7.0 Authenticatiob successful target host ...
250 2.1.0 Sender OK
250 2.1.5 Recipient OK
354 Start mail input; endwuth <CRLF>.<CRLF>
となります。
なんとなく送信できていそうですが送信されず。
違う認証メールサーバーで、sendmail.prg を使用してテスト
添付ファイルを指定すると送信でき、ない場合は送信できない?
以上がテスト結果です。
誠にすいません、ご指導お願いします。
SMTP over SSLの場合はsendmail2.prg、SMTP STARTTLSの場合はsendmail3.prgです。
sendmail2.prgとmail002.dllをダウンロードしメールアドレス、ID、パスワードなどを設定し試してください。mail002.dllは暫定です。
メール送信aragowサンプルmail001.dll についての質問です。
メール環境を、office365 に切り替えたためaragowからのメール送信が出来なくなりました。
mail001.dll を使用してテスト(smtp認証)したところ次のようなエラーとなりました。
220 HKNPR06C0054.outlook.office365.com Microsoft ESMTL MAIL Service ready .....
250 HKNPR06C0054.outlook.office365.com Hello [XXX.XXX.XXX.XXX]
500.5.7.4 Unrecognized authentication type
500.5.3.3 Unrecognized command
たぶん、暗号化の ssl/tls が starttls に対応してないためと思いますが、対応方法はありますか?
office365 は送信メールは次の指定となっています。
サーバーの種類 サーバー名 ポート 暗号化方法
送信 smtp smtp.office365.com 587 TLS
よろしくお願いします。
2015年
過去の書き込みは下記に移しました
☆☆☆ merrybelleの掲示板 ☆☆☆
皆さん、お気軽に書き込んでください。
かなり以前、kourogiさんから教えていただいたsimousa+zeroremoteの技術。
どうしても実現できませんでしたが、やっとできました。
といっても、今回は、VPNは筑波大学のSoftEther、zeroremoteの代わりに
Brynhildr、つまり、 SoftEther+BrynhildrでようやくOK。
出先のPCから自宅のPCを自由に動かせました。
どうやら、僕の推測はまったく的外れのようでした。
開発用WinXP に、2010C#をインストールしました。
推測では、getphonetic()は「半角カナ」を返すはず・・だったんですが、何と「全角かな」でした。
.NET Framework のバージョンは4、getphonetic()が「半角カナ」を返すEpsonのXPとまったく同じ。
どうやら.NET Framework 以外の「何か」に原因がありそうです。
IMEのバージョンかとも思い、データを以下に・・。
--
getphonetic()が「半角カナ」を返すEpsonのXPは
IMEスタンダード2003 ver.9.0.5516.0
getphonetic()が「かな」を返す開発用のXP(ヒューレットパッカード)は
IMEスタンダード2003 ver.9.0.8164.0
--
でした。
前便、誤解を招きそうなので、削除します。
“もうaragoはあきらめ・・・”C#へ(^^;)です
>囲碁五段ですから認知症は大丈夫かと
よぼよぼですから・・。
>WinXP Service Pack 3で全角ひらがなを返しましたですか・・・わからないです
OSではなく、「.NET Framework」のバージョンに依存しているような気がします。くだんのヒューレットパッカードXP(2年前までは僕の開発マシン)、マイクロソフトの古いVSが入っています。
>hantozen001.dllは
>・・・
>を除いてコンパイルすれば何も入っていないXPでも動くと思います
副作用は出ないでしょうか?
>たいへんかもしれないですがC#がいいかと
え? C#でdll作れってことですか?
Aragoでそのdllが呼べる?
今日、EpsonのXP(SP3)(お世話になっている囲碁センターにあるんです)に、「.NET Framework 4」をインストールして、試しました。
結果は、あいかわらず「hantozen001.dllはロードできません」のご宣託。
そこで、2010c#をインストールしてみましたら、Win7と同じ動きをしました。
つまり、「etphoneticが半角カナを返しました」。
最初に「.NET Framework 4」をインストールしたあとは、
あまりさだかではありませんが、
「.NET Framework 4 Client Profile」と「.NET Framework 4 Extended」が入っていた・・ような気がします。
C#をインストールした後は、
「.NET Framework 4 Multi-Targetting Pack」が追加されました。
なので、ユーザーには、「.NET Framework 4 Multi-Targetting Pack」をインストールしてください、と言えばOKなんでしょうが、普通のユーザーにはちょっとハードルが高いような気がします。
もう少し、テストしてみます。
囲碁五段ですから認知症は大丈夫かと
WinXP Service Pack 3で全角ひらがなを返しましたですか・・・わからないです
hantozen001.dllは
__declspec(dllexport) char * kanji_to_kana(char * string01,char * string02);
//kanji_to_kanaで毎回openとcloseを繰り返さないようにopenとcloseを分けたものすこし速くなる
__declspec(dllexport) long openife(void);
__declspec(dllexport) char * getife(long ife01,char * string01,char * string02);
__declspec(dllexport) void closeife(long ife01);
を除いてコンパイルすれば何も入っていないXPでも動くと思います
でもたいへんかもしれないですがC#がいいかと
>> hantozen001.dllは以前にkourogiさんの書き込みでxpにC++2010
xさん、過去ログでみつけました。
--
kourogi-->>.NET Framework 4
inaba-->>Win98SE2+arago4.5ではkourogiさんと同じエラーでした。
--
自分で書いていて何も記憶がありません。歳のせいかな。
xさん、ありがとうございます。
>Windows XP Service Pack 1の場合全角ひらがな
全角ひらがなになったヒューレットパッカードのWinXPはService Pack 3、Win7の前に開発用に使っていたPCでしたので、MSのC++なども入れてあります。
>hantozen001.dllは以前にkourogiさんの書き込みでxpにC++2010の無料版をインストールしたところ動作しましたとありました
そういえば・・。過去ログ、見てみます。ありがとうございます。
MFCとか、ドットネットフレイムワークとかの関係ですかね?
しかし、Win7で半角カナを返すってのも???
Win7+arago6.7では、os()の返り値はemptyでしたし、汎用ソフトに実装するのは難しいかもしれませんね。
もうaragoはあきらめでしょうか・・。
ImmGetCompositionStringはWindows XP Service Pack 1の場合全角ひらがなで取得されますとありました
hantozen001.dllは以前にkourogiさんの書き込みでxpにC++2010の無料版をインストールしたところ動作しましたとありました
inabaです。
前々便での
>いつぞやの自動ルビふり機能を導入しようと思い・・
ですが、
ent1に漢字入力、ent2にルビという入力域を設け、「かな」「カナ」「半角カナ」を選んで自動ルビふり機能をつけました。
開発はWin97+arago6.7です。
これをWin7と2台のWinXP(最終バージョン)で試しましたら、
Win7は、getphoneticが半角カナを返しました。
ヒューレットパッカードのXPは、getphoneticが全角ひらがなを返しました。
EPSONのXPは、keybd001.dllは読み込めましたが、hantozen.dllはロードできませんでした。
どんなことが起こっているのかと・・。
そうですか、xさん、囲碁を打たれるんですね。
>高校囲碁の選手だった若いかたと打ちましたどうも勝たせてくれたようでした
相当な実力なんでしょうね。びっくり。
僕は名前だけ五段ということで、実力は??です。
久しぶりです変わりないですがけっこうな歳になりました先日高校囲碁の選手だった若いかたと打ちましたどうも勝たせてくれたようでした
xさん、お元気ですか?
以前作った汎用ソフトにバグがあって、いつぞやの自動ルビふり機能を導入しようと思い、久しぶりにやってきました。
以前の掲示板同様、なにやらめんどうな書き込みがありますね。
何が目的なのか、誰も書き込みを信用しないのに、本当に不思議です。
また少し復習させていただきます。
2014年
記事56書いてから、55番削除の方法分かりました。
今度は、その56番が削除キー登録しなかったためか、削除できなくなりました。
重ね重ね失礼しました。
ページの下の方にプログラム事例があって分かりました。
直前の書込み取り消しです。
削除キーだけ入れても消えませんね。
失礼しました。
2013年
こんにちは
MySQLのほうは
*mysql001.dllとmysqlのbinにあるlibmysql.dllをprgのフォルダに置く
PostgreSQLのほうは
*postgres001.dllとpostgresqlのbinにあるlibpq.dll ssleay32.dll libeay32.dll libintl-8.dll libiconv-2.dllをprgのフォルダに置く
です
MySQLはライセンスがきついのでPostgreSQLにしましょう
SQLならばトランザクションもしっかりしているし言語もなんでも使えるしみんなでメジャー(^^)をめざしましょう
お久しぶりです。質問のときしか書き込みせずすみません。
同じフォルダーにmysql001.dllとMySQL1.prgを置いて実行したのですが、mysql001.dllがロードできませんと出てしまいます。
mysql001.dllのサイズは42496バイトです。環境はXP-SP3 ARAGOWのバージョンは4.5です。メモリは1GB MySQL2.prgも同様です
PostgreSQLのインストール
dataフォルダはProgram Filesでない場所に設定する
vista homeの場合はそのままではインストールできないので下記のやり方でインストールする
コントロールパネルユーザーアカウントユーザーアカウント制御の有効化または無効化ユーザーアカウント制御(UAC)を使ってコンピュータの保護に役立たせるのチェックを外す
ユーザーアカウントpostgresを作成しパスワードを設定する(このパスワードはPostgresSQLでも使います)
ユーザーアカウントpostgresを作成できない場合は見えないところでユーザーアカウントpostgresがすでに作成されているのでコマンドプロンプトでnet user postgres /deleteとしてからProgram Filesのpostgresフォルダを削除し再起動してはじめからやる
コントロールパネルユーザーアカウントユーザーアカウント制御の有効化または無効化ユーザーアカウント制御(UAC)を使ってコンピュータの保護に役立たせるのチェックをいれる
インストール後ユーザーアカウントpostgresは削除可です
*arago+mysqlで郵便番号検索dllでやってみました瞬時に検索されます
googleみたいな検索もできる
encode001.dllのurldecode()にバッファオーバーランの危険がありなおしました他のdllもいろいろとこっそりなおしています
アドバイスありがとうございます。
やってみます。
*マルちゃんさんのHTMLを実行したらGETARG(2)に2001%81%602011%20%8F%A4%95i%82P.jpgが入りましたwmvdisp.prgを下記にして試してみてください
EXTERN CSTRING urldecode(CSTRING,CSTRING) encode001.dll
output('Content-type: text/html',2)
store space(200) to string02
output(urldecode(GETARG(2),string02))
おめでとうございます
本年も宜しくお願い致します
質問の時にしか投稿せず申し訳ありません
HTMLファイルに下記リンクを貼ってCGIを行いたいのですが
<A href="/cgi-bin/aragoi.exe?wmvdisp.prg+2001~2011 商品1.jpg" target="wmvtop">商品1</A>
この時の"2001~2011 商品1.jpg" をARAGOIで取得したいのですが
encode001.dllをつかって出来るのでしょうか?
2012年
それはたいへんですねこちらは相変わらずでやれていますが被災者にはメリーとかおめでとうとか言いづらいです
merryで思い出しました。
イブですが、みなさん、merry christmas。
クリスマスにはふさわしくない話題ですみません。
LANの管理やオリジナルソフトを作成してきた事業所が大震災で半壊したうえ、台風15号で床上浸水し、手元不如意となって、小生も職を失いました。
みなさんは大丈夫ですか?
みなさん、ご無事で何よりです。
他の言語に替えたくても、外注は高いし、
言語力無いし・・・トホホです。
overlayprn001.dll は 新作ですか ?
inabaさんぶじでしたか大地震や原発の被害のことは暗い気持ちになりますねとりかえしのつかないことですから
"理解できないエラー"になるのは言語として脆弱であると思います"他の言語にすべて切り替え、今までのは何だったのかと思うほどです"などの書き込みもありましたね
overlayprn001.dllで方眼紙を作って印刷したらエプソンのプリンタでは正確に印刷されましたがキャノンのプリンタでは30cmで0.5mmずれて印刷されましたプリンタの精度はこんなものなのかも
東日本大震災で被災しました。フツーはまず体験することがないわけで・・。
まあ、良しとしますか・・。
相変わらずね理解できないエラーと戦いながら
頑張ってますよー
みなさん元気ですかね、震災もあったものですから
気になってました。
自分でビルドする方へ
Microsoft Visual Studio 2008を起動する
ファイル 新規作成 プロジェクト
Visual C++ Win32 Win32コンソールアプリケーション
プロジェクト名 例keybd001
場所 例d:\c++
ソリューション名 例keybd001
OK
次へ
DLL
空のプロジェクトをチェック
完了
プロジェクト 新しい項目の追加
Visual C++ コード
C++ ファイル
ファイル名 例keybd001
追加
keybd001.cppをコピペする
プロジェクト keybd001 のプロパティ
構成プロパティ
構成 Debug
全般 文字セット マルチバイト文字セットを使用する
C/C++ コード生成 ランタイム ライブラリ マルチスレッド デバッグ (/MTd)
適用
構成 Release
全般 文字セット マルチバイト文字セットを使用する
C/C++ コード生成 ランタイム ライブラリ マルチスレッド (/MT)
適用
OK
ビルド バッチ ビルド すべて選択 リビルド
エラー 0、警告 0 警告があっても動作するが理解の上で使用すること
2 正常終了、0 失敗、0 スキップ
D:\c++\keybd001\Releaseにkeybd001.dllがビルドされる
回答有難うございます。
testではうまく動作いたしました。
有難うございました
書き込みありがとうございます
EXTERN CSTRING shift_to_utf(CSTRING,CSTRING) encode001.dll
store "あいうえお" to string01 &&変換元の文字列
store space(1000) to string02 &&これはバッファオーバーラン防止のバッファです
shift_to_utf(string01,string02)とやるとstring02に何かが^^入るでしょうが変換の結果はshift_to_utf()に帰ってきますstring02ではありません
store shift_to_utf(string01,string02) to string02としてはじめて変換の結果がstring02に代入されます
ほかのdllも同様でstring02などはたんなるバッファですので注意してください
ARAGOI.EXE からencode001.dll を使ってHTML コマンドで出力する場合は
この書き方でいいのでしょうか?
EXTERN CSTRING shift_to_utf(CSTRING,CSTRING) encode001.dll
store "あいうえお" to string01
store spac(1000) to string02
shift_to_utf(string01,string02)
HTML TEST.htm
*------------ test.htm の中身 ここから
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
%string02
</html>
*------------- ここまで
この書き方では文字化けしてうまくいきませんでした。
Xさんありがとうございます
XP Microsoft Windows XP [Version 5.1.2600]
Vista Microsoft Windows [Version 6.0.6001]
Windows 7 Microsoft Windows [Version 6.1.7600] で
XP=5.1 Vista=6.0 win7=6.1 の判断でやってみます
Mishinaさんご自愛ください
www.soupacific.comの掲示板にVistaがMicrosoft Windows [Version 6.0.6001]
Windows 7がMicrosoft Windows [Version 6.1.7600]と表示されますと書き込みましたが
別のVistaはMicrosoft Windows [Version 6.0.6000]でした
また古いWindows NTで動かなかったのでこっそりなおしました
Xさん たいへんご無沙汰しております。
keybd001.dll をありがとうございました。手元にはwin7はありませんが
この関数でOSを読み込んで分岐させることが出来るようになります。
2011年
自動返信システムが稼動して1ヶ月
いろいろありましたが、返信が来ないのは
携帯でPCからのメール拒否になっていたことがほとんどで
その他 iPhoneは From: のメールアドレスが
<>なしのアドレスに続いて <>内にアドレスが入るパターンなど
携帯により様々なケースがあるようです。
今年は本当にありがとうございました
システムも皆様に出会って
大きな収穫をもとに、さらに便利に発展できましたこと
心より感謝申し上げます。
DirectPRNは特に飛躍しました
簡単な集計の帳票は
レシートプリンターでもできるようになり
いちいちA4用紙をセットしなくても、
誰でも手軽に印刷できるようになりました。
スナップ写真のデータをもとに
顧客管理が全員で共有でき、今DMの準備をしています。
自動返信メールは
メーカーが大変便利に利用しています、
弊社に来るメーカーは事前にメールで確認し
追加を持ってきてくれることで
欠品が防止できるようになりました。
現在与えられた宝物をもとに、
プログラムのシンプル化
集計関連の新規プログラムに着手しています。
来年もお付き合い頂けましたら幸いです
最近私の書き込みが減りましたが、
順調に進捗している証でありまして
また、ご相談いただくこともございますが
その折にはよろしくお願い申し上げます。
> すっきりしません。
kourogiさん、情報が少なすぎて想像できません。
でもまあ、期待どおりの機能が実現できれば結果オーライでは?
下記における原因は違っていました、
whenをはずしたのですが、やはりプッシュボタンは効かなくなります
数回の受信を繰りかえすと効かなくなりますが、2回程度の場合は
問題ないようです。
現在はプッシュを再定義することによって解決しましたが、
すっきりしません。
すみません、また板を汚してしまいました
inabaさん いいところ突いてるかもしれません
>プッシュボタンに when オプション
時間がかかるテストなので、試してみます。
プッシュボタンに when オプション
> start timer のタイマー実行中のようです、
> 一連の処理は実行しているけど、プッシュボタンは反応していない
不思議ですねえ。
ソースコードは何行くらいですか?
timerは定期的にメールサーバにアクセスするためだけに使ってらっしゃるのですか?
プッシュボタンに when オプションを使ってなくても反応しなくなるのでしょうか?
inabaさんお世話になります。
タスクマネージャーは実行中となり
ESCキーでダイアログは閉じます。
ブロックごとにチェックしてみると
start timer のタイマー実行中のようです、
プッシュボタンが効かなくても 実行中であり、
その間メールも自動受信し、また処理後の結果をメール送信はしています
一連の処理は実行しているけど、プッシュボタンは反応していないのです
落ちるわけでもなく、ESCでダイアログは消え、メニューに戻るので
支障はないのですが、気になります。
それを考えると 無限ループでも無いようです。
見当がつかないので書き込みを控えていましたが、windowsやjavaなどのアップデート中なんてことはないでしょうか?
また、メールの総数を検査処理しているときに、本数によって無限ループに入るとか・・?
> いつのまにか
> ダイアログ内すべてのプッシュボタンが
> 効かなくなり、中断のプッシュボタンが反応しない
反応しなくなったときタスクマネージャーを起動するとどうですか?
今回の自動返信メールのシステム
順調に作動はするのですが
1日中作動させると、いつのまにか
ダイアログ内すべてのプッシュボタンが
効かなくなり、中断のプッシュボタンが反応しないので
ESCで中断させることになります。
携帯で2,3回テストしてみると、問題ないのですが
そうなるタイミングがわかりません。
旧掲示板にお気に入り登録してあったので
迷子状態でした。
サンプルプログラムの板のページをお気に入りしていたマシンが1台あって
たどり着けました。
自動メール返信システム スタッフ全員に操作方法を通達して
順調に稼動いたしました。
自分が休みの日でも 担当店舗の売上を問い合わせる
熱心な社員がいることも、履歴から見えて 思わぬ収穫です。
こいつは 年明け 店長昇格です(冗談ではなく本当に)
xさん mail011ご苦労おかけしましたこと、心より感謝します。
なにが 起きた!
inabaです。おはようございます。
xさん、新版のmail011.dll、wz-mailerで送ったメールもOKでした。
お疲れさまでした。
inabaさんお気に入りのwz-mailerの件です
他でも同様の文字化けが起こり確認しましたwz-mailerの問題ではなくmail001.dllのバグでしたすいませんでした
iso-2022-jpの場合1B2442で漢字に変更して"中間"その後1B2842でASCIIにもどす・・・が間違えていました
上記の他に漢字inに1B2440、漢字outに1B284Aが使われていました
wz-mailerでは漢字outが1B284Aとなっているようです
mail001.dllなおしました
xさん、すばらしいできばえと思います。添付ファイルもOKでした。
pop3.prgを動かしてみると添付ファイルのファイル名が日本語だったりいろんなメールがあるのがわかります汎用で動くようにするのは面倒ですね
pop3ex.prgは自前のsendmail.prgで送った添付ファイルの場合などContent-Transfer-Encoding: base64によって送られた添付ファイルを保存します
Outlookでは添付ファイルの拡張子によって送り方が変わるようで拡張子がtxtの場合などContent-Transfer-Encoding: Base64で送られた場合だけ動きます
添付ファイルの保存先やファイル名を送信側でなく受信側で決めるようにしないと受信側の任意のファイルを書き換えられてしまうので注意!
危険なメールの添付ファイルも保存されるので注意!
pop3ex.prgは送信元を特定しないと使い道がないと思います(危険)ファイルの送受信にはhttp001.dllの方がいいです(md5チェックサムも使う)
kourogiさんも認証なしでは迷惑メールに返信することになりはしないかと・・・
長い件名の場合は複数行で送られてくるのでpop3.prgで一行にまとめました同様に長い件名を送る場合は複数行で送るようにsendmail.prg(sendmail1.prgも)をなおしました
xさん、おはようございます。
掲示板のメンテ、おつかれさまです。
新掲示板、今までと同じですか?
タグも有効だったのですか? 大丈夫かな。
ODNのサービスを見たら、ページ設定ができるみたいですね。
☆☆☆ merrybelleの掲示板 ☆☆☆
皆さん、お気軽に書き込んでください。
xさん、すみません475の意味がわからなかったものですから
削ったら、レスポンス良く、自動応答システムが稼動しました。
SMTPサーバーによって仕込むセット回数が違うということでしょうか
SMTPが変わったとき、同様の調査が必要になるのでしょうか
今は認証なしの受信したタイトルだけで応答する、現在の売上速報だけですが
なんだか大企業のシステムのようでワクワクします。
社員だけの情報共有だけではなく、仕入れ元の売れ筋問い合わせなど
取引先が自社のために先手を打ってもらうことができる、楽しみです!
投稿者:x 投稿日:11月11日(木)20時11分00 [475]
了解しましたkourogiさんは473の3行を2セット余分にいれて一個につきタイムアウト10秒間計20秒を根気よく待ったと言うことですね1個のメールを送るのに時間がかかりすぎると思わなかったですか?473の3行のセットは459に書き込んだようにピリオドで終わってくださいまで表示される最小回数にしてください余分な一個につきタイムアウト10秒間の無駄になります
xさん、抜けはないと思います、何回かチェックしました
473の3行を2セット削ると 空白行は出ません、
関係なかったですか?
投稿者:x 投稿日:11月11日(木)12時56分12 [473]
kourogiさん“同じように空白2行入りますが”の件ですが時間のあるときに下記みてくれませんか?
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
上記のようにバッファ用に毎回STORE SPACE(1000) TO string01を入れなければならないのですがこれが抜けていませんか?
> このメールを送り出したメールソフトを特定できますか?
テキストエディタに付属しているおまけですから、たぶんマイナー、dllで対策する必要はないと思います。個人的には大好きなメーラーですけど・・。
xさんバッチリです!
459のように修正したところ
sendmailで
同じように空白2行入りますが
正常に送信できました。
ありがとうございます!
投稿者:x 投稿日:11月10日(水)22時55分49 [470]
iso-2022-jpの場合1B2442で漢字に変更して"中間"その後1B2842でASCIIにもどす1B2442で漢字に変更して"こん"その後1B2842でASCIIにもどすものと思いますが
inabaさんの指摘のメールの場合上記の1B2842でASCIIにもどすが抜けているようです
このメールを送り出したメールソフトを特定できますか?それがよく使われているメールソフトならばmail001.dllでも対応しなければなりませんね
デコード 投稿者:inaba 投稿日:11月10日(水)21時57分24秒 [469]
> メール本体の"こん"の後ろは空白ですかCRLFですか?
すみません、メーラーでDLしてしまいましたが、たぶんCRLFです。
DLしたmbxの該当部分を正確に書くと
--
To: 中間 <hoge@huga.co.jp>
Subject: test3
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="iso-2022-jp"
From: GON <hogo@huga.co.jp>
X-Mailer: WZ MAIL 5.03
Cc:
X-UIDL: cK'"!T????]"!
Status: RO
こん
--
です。
pop3hoge.prgで取得した場合は
--
To: 中間~G服珠瘠瘢畧苺鉅尞鼈甌竢・霈
Subject: test3
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="iso-2022-jp"
From: GON <hogo@huga.co.jp>
X-Mailer: WZ MAIL 5.03
Cc:
X-UIDL: cK'"!T????]"!
Status: RO
こん~GJ
.
--
です。
空白行はCRLFです。
@を含むメアドとX-UIDLは書き換えてあります。
投稿者:x 投稿日:11月10日(水)21時23分08 [468]
To: =?ISO-2022-JP?B?GyRCQ2Y0VhsoSg==?= <hoge@huga.co.jp>のほうは"中間"の後ろでASCIIに切り替わらないだけです修正済みと思っていました
メール本体の"こん"の後ろは空白ですかCRLFですか?
正確に・・ 投稿者:inaba 投稿日:11月10日(水)21時16分35秒 [466]
クライアントに提供するソフトのバグの処理は本当にやっかいですよね。
xさん、前便に正確さを欠きましたので追記です。
----
To: =?ISO-2022-JP?B?GyRCQ2Y0VhsoSg==?= <hoge@huga.co.jp> &&メール本体
To: 中間~G服珠瘠瘢畧苺鉅尞鼈甌竢・霈 &&pop3.prgで取得
----
上記、ftpで接続し、数珠繋ぎメールをテキストエディタで見るとそうなってますが、
送信したメールの To: は「中間<hoge@huga.co.jp>」ですので、文字化けは「~G..」と思われます。
投稿者:x 投稿日:11月10日(水)21時08分54 [465]
inabaさんの462の指摘も明らかにバグですね恐縮です指摘していただきおおいに助かりますバグがあっても許される場合と許されない場合がありますねレンタルサーバーのほうが厳密なのはりっぱですね
お手数ですが今日のmail001.dllをダウンロードしてもう一度ためしてみてください
xさん、ご苦労さま 投稿者:inaba 投稿日:11月10日(水)20時24分23秒 [462]
お世話になりますねえ。無理しないでください。
一応、私の方も報告します。
新しいNo.461前の 新しいpop3.prgとsendmail001.dllでレンタルサーバのPOP試しました。
おおむねOKでした。
以下に、ちょっと違う?みたいな部分を・・。
----
To: =?ISO-2022-JP?B?GyRCQ2Y0VhsoSg==?= <hoge@huga.co.jp> &&メール本体
To: 中間~G服珠瘠瘢畧苺鉅尞鼈甌竢・霈 &&pop3.prgで取得
--
こん &&メール本体の本文
こん~GJ &&pop3.prgで取得した本文
----
こんな感じでした。
投稿者:x 投稿日:11月10日(水)20時07分10 [461]
kourogiさんありがとうございますおかげさまでまたバグがみつかりました修正したsendmail.prg(sendmail1.prgも)をアップロードしましたのでまずそのままでためしてみてくださいだめならば459をためしてください235 Authentication successfulとなっていますので認証まではokですね
表示は下のとおりでした
220 smtp07.phy.lolipop.jp ESMTP qpsmtpd 0.82 ready; send us your mail,but not your spam.
250 smtp07.phy.lolipop.jp Hi i60-36-129-169.s02.a024.ap.plalaicmesh.ad.jp [60.36.129.169]
250-PIPELINING
250-8BITMIME
250-SIZE 10240000
250 AUTH PLAIN LOGIN CRAM-MD5
(空白)
(空白)
334 VXNlcm5hbWU6
334 UGFzc3dvcmQ6
235 Authentication successful for xxx@syaruru.com - authsql/login
501 could not parse your mail from command
503 Use MAIL before RCPT
503 MAIL first
投稿者:x 投稿日:11月10日(水)18時25分28 [459]
忙しいところ恐縮ですが時間のあるときに下記をためしてみてくださいなさけないことに手動設定です
kourogiさんのレンタルサーバーの場合は
sendmail.prgのPROCEDURE sendmail01の中を
下記をコメントアウトする
* sendjis(sock,'HELO localhost'+CHR(13)+CHR(10))
* STORE SPACE(1000) TO string01
* STORE recvsockoneline(sock,string01) TO n
* ? SUBSTR(string01,1,n)
下記を挿入する
sendjis(sock,'EHLO localhost'+CHR(13)+CHR(10)) && EHLOです間違えないように
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
受信回数は7~10回くらいでピリオドで終わってくださいまで表示されるように受信回数を合わせる
少ないとピリオドで終わってくださいまで表示されない多すぎると一個につきタイムアウト10秒間待つことになる
so-net.ne.jpでは下記のように表示される
220 mx61.ms.so-net.ne.jp ESMTP
250-mx61.ms.so-net.ne.jp Hello KKRfx-01p1-191.ppp11.odn.ad.jp [210.120.100.190], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 10240000
250-DSN
250-AUTH LOGIN PLAIN ←これが表示されればAUTH LOGINを使えます
250-STARTTLS
250-DELIVERBY
250 HELP
334 VXNlcm5hbWU6
334 UGFzc3dvcmQ6
235 2.0.0 OK Authenticated
250 2.1.0 xxx@pro.odn.ne.jp... Sender ok
250 2.1.5 xxx@js3.so-net.ne.jp... Recipient ok
354 Enter mail, end with "." on a line by itself ←ピリオドで終わってください
xさん 452で言われる通りかもしれません。
使ったことのないPLALAから頂いたメールアドレスを認証ありで使用したところ
正常送信できました。
レンタルサーバーの場合は次のメッセージを表示します。
220 smtp04.phy.lolipop.jp ESMTP qpsmtpd 0.82 ready; send us your mail,but not your spam.
250 smtp04.phy.lolipop.jp Hi FL1-219-107-XXX-xxx.aicmesh.ad.jp [219.107.xxx.xxx]; I am so happy to meet you.
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
501 could not parse your mail from command
503 Use MAIL before RCPT
503 MAIL first
投稿者:x 投稿日:11月10日(水)13時42分19 [454]
sendmail.prg
sendmail1.prg
pop3.prg
上記で行末を+CHR(10)としていたのを+CHR(13)+CHR(10)にかえましたのでためしてみてください
POP3 投稿者:inaba 投稿日:11月10日(水)13時09分15秒 [453]
xさん、説明不足ですみません。
レンタルサーバのレスポンスを再掲
---------------------
1 +OK Qpopper (version 4.0.5, modified by Sphera Technologies) ready. <30787.1289309004@sphera>
2
3
4 -ERR Bad command.
---------------------
この 1-4 の番号はレスポンスでなく、pop3hoge.prgに書いたものです。
1 は ? "1 "+SUBSTR(string01,1,n) && 接続OKpopサーバ
2 は ? "2 "+SUBSTR(string01,1,n) && IDはOK passを送れ
3 は ? "3 "+SUBSTR(string01,1,n) && パスはOK メール数あり
4 は ? "4 "+SUBSTR(string01,1,n) && message数+総バイト数
接続はしたが、ユーザidとpasswordはどうなっているんでしょう?
受信ボックスにメールがあるのは、ftp接続で確認できますし、IDもパスワードも間違っているようにはみえません。
また、xさんのご指摘にしたがって、1 の部分を少しずつ増やしながら試してみましたが、変化はなく、2回繰り返したところで(つまり3回目の 1 で)以下のエラー。
1 -ERR Bad command.
投稿者:x 投稿日:11月10日(水)09時50分49 [452]
SMTP認証ですがsendmail.prgでは'HELO localhost'を送り'AUTH LOGIN'で認証していますodn.ne.jpとso-net.ne.jpではokなのですがkourogiさんが使用しているメールサーバーではここが違うのでしょう
sendmail.prgを実行したとき何が表示されるか個人情報を抜いておしえてください
sendjis(sock,'HELO localhost'+CHR(10))の後レスポンスが複数行の場合は下記のように受信する行を一つずつ増やしてみてください
sendjis(sock,'EHLO localhost'+CHR(10))
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
inabaさんのレンタルサーバーの件もstore opensock(pop01,110) to sockの後のレスポンスが複数行なのかもしれません下記のように受信する行を一つずつ増やしてみるとわかるかもしれません
store opensock(pop01,110) to sock
if sock>0
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
STORE SPACE(1000) TO string01
STORE recvsockoneline(sock,string01) TO n
? SUBSTR(string01,1,n)
endi
xさんご安心を
すでに対応済みです!
投稿者:x 投稿日:11月09日(火)23時13分00 [447]
新しいpop3.prgで上のdo whileがメールヘッダ部で下のdo whileが本文ですどちらも? check01で出力してますのでそこからデータを取り出せます上の? check01の下に
? check01
if left(check01,9)='Subject: '
store substr(check01,10,len(check01)-9) to subject01
endi
とすればSubject: を取り出せます
xさん、No.418を実行したら、ヘッダをDLして終わってしまったので、元のpop3.prgのプロシージャ(sousin)に書き込んで解決していました。
> 前のmail001.dll
> recvjisoneline() デコードする
> recvjisquoted() デコードする
これと関係あるかどうか乏しい頭では不明ですが・・。
レンタルサーバ 投稿者:inaba 投稿日:11月09日(火)22時34分02秒 [444]
レンタルサーバで試してみました。
OSはLINUX、POPサーバとSMTPサーバがあります。
アカウントを作成し、メールを送り、pop3hoge.prgを実行(pop3hoge.prgは、プロバイダのメールサーバではOKを確認済みです)。
で、やってみた結果をテキストファイルに出力すると
---------------------
1 +OK Qpopper (version 4.0.5, modified by Sphera Technologies) ready. <30787.1289309004@sphera>
2
3
4 -ERR Bad command.
---------------------
以上でおしまいになってしまいました。
dllは古い方です。
ウーム??・・??
投稿者:x 投稿日:11月09日(火)20時00分55 [443]
inabaさんmail001.dllのバグというのは前の mail001.dllではSubject: =?iso-2022-jp?B?GyRCJUYlOSVIGyhC?=などをメールヘッダ内でも本文内でもデコードしてましたがメールヘッダ内ではデコードする本文内ではデコードしないにかえました
前のmail001.dll
recvjisoneline() デコードする
recvjisquoted() デコードする
新しいmail001.dll
recvjisheader() デコードする
recvjisoneline() デコードしない
recvjisquoted() デコードしない
前のmail001.dllで差し支えなければ前のでもokと思います
kourogiさん、これってユーザー名はアットマークより前の部分じゃありません?
両方試しました、レンタルサーバーなのでxxxだけではないようです
POP3.prgは正常です。
プロバイダで与えられたメールアドレスを試して見ます。
今日、ようやくTiny+Zeroのテストに成功しました。
自宅のXPパソコンをzeroのサーバにし、外部のXPパソコンからルータ越しの無線LAN経由でOKでした。
1つの技術を使えるようにするということは、たいへんなことなんだ・・とあらためて思いました。
xさん、
> pop3.prgとmail001.dllのバグでしたなおしました
dllにもバグがありましたか?
pop3.prgの方は私なりに試行錯誤して修正し、期待通り動いてくれましたが・・。
たとえば、ユーザー名やパスワードや商品コードの取り出し・・など。
ユーザ名 投稿者:inaba 投稿日:11月09日(火)19時02分32秒 [439]
ちょっと忙しい仕事にふりまわされている間に何やら議論がすすんでますね。
掲示板、見るだけは見てたんですけど・・。
> ユーザー名はMAILアドレスであるxxx@syaruru.com です。
kourogiさん、これってユーザー名はアットマークより前の部分じゃありません?
xさん、ご自身の知識と実力は、私は尊敬しております。
それよりも、知識のある技術者よりもっとすばらしいことは
ご自身の時間をさいて、
私のような者に、親切に指導して頂けるご好意そのものです。
inabaさんも同じだと思います。
ありがとうございます。
投稿者:x 投稿日:11月09日(火)14時30分06 [437]
Subject: が複数行のものもあることは知りませんでしたの件ですがkourogiさんすいませんこれは私のpop3.prgとmail001.dllのバグでしたなおしました私のdllはこの程度のものです
SENDMAILでした、文頭に「SMTP認証ありの」を確認しました
ユーザー名はMAILアドレスであるxxx@syaruru.com です。
場所を変えてテストしてみます。
投稿者:x 投稿日:11月09日(火)07時31分46 [434]
SMTP認証ありの場合はsendmail.prgなのですが kourogiさんの書き込みはSENDMAIL1と1がついているのですが・・・またUsernameがxxxではなくxxx@js3.so- net.ne.jpだとかでしょうか+OKはpop3サーバーのレスポンスですのでsendmail.prgのほうでは+OKは出ないです
Outlookでは送受信ともにOK
SMTP認証ありで 各xxxは間違いないと思うのですが
Unrecognized command が3つ出て終了します。
ポートは587です
何の設定か悩んでいます。ダウンロードした最新のprgとdllですが
原因を調べています。
投稿者:x 投稿日:11月08日(月)20時45分54 [430]
まずOutlookやWindowsメールなどの現在使用している メーラーでテストしますokならばSMTP認証ありの場合はsendmail.prg(一般的)、SMTP認証なしでPOP before SMTPの場合はsendmail1.prgでxxxとなってる各項目をすべて設定してテストしてみてください最新のprgを使ってくださいESMTPは SMTP認証ありのほうですね
お尋ねいただいたメールサーバーへの接続間隔について
目安などの制限は設けておりませんが、30秒間隔など、
頻繁に接続が行われますと、サーバーに負荷が発生しやすくなります。
しかし、サーバーに著しい負荷が発生している場合には
ご対策をお願いする旨のご連絡を差し上げることがございます。
予めご了承ください。
と言われました、2分くらいなら良さそう、そういう問題かな。
今、メール送信のテストしていますが、うまくいきません。
sendmail1を実行しました
+OK Connected to proxy server.
+OK Bye-bye
220 smtpXX.phy.XXXXXX.jp ESMTP qpsmtpd 0.82 ready; send us your mail, butnot your spam.
250 ・・・・・・・・; I am so happy to meet you.
501 could not parse your mailfrom command
503 Use MAIL before RCPT
503 MAIL first
と表示されます、何の設定に問題がありそうか
わかりますでしょうか
ありがとうございます、
間隔は変更するとして
cgiは全く知識が無いので
今回のメール受信の方法で
完成してみます。
レンタルサーバーにも問い合わせてみます。
投稿者:x 投稿日:11月08日(月)10時12分19 [425]
在庫問い合わせの業務で1分間隔がどうしても必要ということならばcgiでinabaさんのシステムのように問い合わせフォーム入力から自動メール配信とするか結果をブラウザで表示するように方法をかえたほうがいいと思います
間違い 投稿者:inaba 投稿日:11月07日(日)20時07分35秒 [423]
前便に間違い。
> 対策は、プロバイダのメールルール設定で、自分自身から自分自身への送信は無条件にOKとする。
「送信」ではなく、「受信」です。
SPAMメール 投稿者:inaba 投稿日:11月07日(日)19時58分50秒 [422]
> メールサーバー(レンタル)への問い合わせは、頻繁に行いすぎると
> サーバー攻撃のように扱われるのでしょうか、
的をはずしているかもしれませんが、フォーム入力があったらその内容を自分自身から自分自身へのメール送受信させると、頻繁になった場合、私のプロバイダでは受信をディナイされました。
プロバイダに問い合わせましたら、「詳細な基準は公開できないが(公開すると犯人にSPAM対策ができてしまうから)、そういう対応をしています」とのこと。
対策は、プロバイダのメールルール設定で、自分自身から自分自身への送信は無条件にOKとする。
以後は問題なく送受信できるようになりました。
ここでの質問は不適切かもしれませんが
メールサーバー(レンタル)への問い合わせは、頻繁に行いすぎると
サーバー攻撃のように扱われるのでしょうか、
DEFINE TIMERを使いますが
1分間隔での接続は、一般的な常識外でしょうか
その辺りが気になります。
ここでの質問は不適切かもしれませんが
メールサーバーへの問い合わせは、頻繁に行いすぎると
サーバー攻撃のように扱われるのでしょうか、
DEFINE TIMERを使いますが
1分間隔での接続は、一般的な常識外でしょうか
その辺りが気になります。
xさん大変勉強になります、
メールサーバーは全く知識がありません、
Subject: が複数行のものもあることは知りませんでした
ありがとうございます
投稿者:x 投稿日:11月07日(日)10時50分05 [418]
inabaさんの言われるとおり+OK・・・はUSER PASS STAT QUITなどの"リクエスト"に対するサーバーの"レスポンス"ですSubjectなどをPRG内の文字列処理で取り出しますPROCEDURE pop301の中を下記などのように変えますメールヘッダは最初に一行あくところまでですのでn>0までがヘッダです
set language to american
store '' to from01,to01,subject01
do while n>0
STORE SPACE(1000) TO string01
STORE recvjisoneline(sock,string01) TO n
store subs(string01,1,n) to check01
if left(check01,6)='From: '
store substr(check01,7,len(check01)-6) to from01
endi
if left(check01,4)='To: '
store substr(check01,5,len(check01)-4) to to01
endi
if left(check01,4)='Subject: '
store substr(check01,9,len(check01)-8) to subject01
endi
? subs(string01,1,n)
endd
上記は'Subject: 'が一行の場合ですがメールによって複数行のものもあります'Content-Type: 'や'Content-Transfer-Encoding: 'は'multipart/mixed;'の場合は'boundary='の文字列で区切られて何度も出てきます
続いて下記などで必要なデータを取り出します
set language to american
store '' to user02,password02,data01
store 0 to quoted
do while n>=0
STORE SPACE(1000) TO string01
if quoted=0
STORE recvjisoneline(sock,string01) TO n
else
STORE recvjisquoted(sock,string01) TO n
endi
store subs(string01,1,n) to check01
if left(check01,11)='ユーザー名='
store substr(check01,12,len(check01)-11) to user02
endi
if left(check01,11)='パスワード='
store substr(check01,12,len(check01)-11) to password02
endi
if left(check01,7)='データ='
store substr(check01,8,len(check01)-7) to data01
endi
if at('quoted-printable',check01)<>0
store 1 to quoted
endi
? subs(string01,1,n)
if subs(string01,1,1)='.'
exit
endi
endd
なおopensock()したら必ずclosesock()してくださいaragoのPOP3()にはclosesock()に相当するものがないようでこういうところもダウンの原因になると思います
迷惑メールに返信しない機密情報を漏洩しないなど注意!
xさんありがとうございます、
ユーザー名を返信用アドレス
それにパスワードで
試作してみます。
投稿者:x 投稿日:11月06日(土)12時47分37 [403]
問い合わせメールの本文を
コウロギユーザー=abcd1234
コウロギパスワード=12345678
商品コード=00000001;00000010;00000100
として
PROCEDURE pop301の中のstore subs(string01,1,n) to check01の次にdo hensin with check01を入れて
PROCEDURE hensin
parameters check01
set language to american
store '' to user02,password02,syouhin01
if at('コウロギユーザー=',check01)<>0 &&コウロギユーザー=abcd1234
store right(check01,8) to user02
endi
if at('コウロギパスワード=',check01)<>0 &&コウロギパスワード=12345678
store right(check01,8) to password02
endi
if at('商品コード=',check01)<>0
store substr(check01,12,len(check01)-11) to syouhin01 &&商品コード=00000001;00000010;00000100
endi
RETURN
取りだしたuser02,password02,syouhin01を使い返信メールの本文を作る
平成22年11月6日14時30分
在庫は下記のとおりでございます
00000001=250
00000010=350
00000100=450
prgとmail001.dll修正しました
>ヘッダの文字列にないデータをリクエストしてもエラーにならずに「emptyを返す」・・?
了解です、いろいろテストしてみます。ありがとうございました。
xさんからコメントをもらったほうがいいんじゃないかと思いますが・・。
> メール構造は複雑なんですね
いや、何と言うか、逆に単純なような・・。
> 文頭 +OK で区切りと考えればいいのでしょうか
「OK」はサーバが吐き出すメッセージじゃないかと・・。
> X-Spam-Status:の次からが本文
うーん、どうでしょ、xさん。ちょっと違うような気がしますが・・。
肝は、ヘッダの文字列にないデータをリクエストしてもエラーにならずに「emptyを返す」・・?
で、Subjectや本文がほしければ、それをPRG内の文字列処理で何とかすればいいということじゃないでしょうか?
あれ? あんまり変わらないか・・。
はい、inabaさん、さっそく頑張っていますが
サーバーはOCNの光、自宅はフレッツ光、これらはok
店によっては、OCN ADSL48 BIGLOBEはダメなところもあります
使用するのはサーバーなので、
その場のマシンでの正常動作は確認取れています。
メール構造は複雑なんですね、
文頭 +OK で区切りと考えればいいのでしょうか、
X-Spam-Status:
の次からが本文として考えますが、それでは問題ありますか?
xさん、試してみました。すばらしい仕上がりです。
pop3.prg中の「?」出力に番号をふって、テキストファイルに書き出してみました。
メールの構造も、その文字列の取り出し方もおもしろいですねえ。
これでkourogiさんもOKですね。
inabaさん随分長期出張でしたね、お疲れ様でした。
inaba@自宅です。
kourogiさん、案の定、Tinyのハブはメモリーにロードしただけで、稼動していませんでした。旅先から繋がるわけありませんよね。
さて、これからどこでテストしたものやら・・。
すみません、
業務用のレシートプリンターがデフォルトに定義した用紙サイズにできていないようでした、
CANONのインクジェットでテストしたところ、正常にデフォルトで印刷されました。
大変申し訳ありません、
レシートプリンター側のサービスに問い合わせてみます。
こちらのミスで失礼しましたこと、お許しください。
投稿者:x 投稿日:11月04日(木)16時52分06 [384]
以前にも話が前後したり今回のことも実はと言われましてもどうもわからないのですが私の89の書き込みは無視されたのでしょうか?それとも0設定でデフォルトにならないということでしょうか?印刷ダイアログを表示してテ ストしてみてデフォルトの用紙設定がどうなっているのかおしえてください
xさん、すごいスピードでPOP3大成功です、
ありがとうございます。
さっそく、システムを組み始めます。
xさん、実は切実なお願いがあるんです、
大変あつかましいお願いなのは十分承知しておりますが
ご検討頂けたら幸いです。
DIRECTPRNの用紙サイズで、0なら デフォルトサイズにできないものでしょうか
実は、プリンターがレシートプリンターのため、最大のA3にしても足らない場合が発生していまして、
ページ数付けて分ければ可能ですが、
そのような例が他にはなくて、上記のように思う次第でございます。
大変あつかましいのですが、要望としてお聞き入れくださいませ。
投稿者:x 投稿日:11月04日(木)13時28分31 [380]
前のpop3.prgはodn.ne.jpではokでしたがso-net.ne.jpには合いませんでしたとりあえずLISTではなくSTATを使うように変えましたmail001.dllやsendmail1.prgも変えました
xさん ありがとうございます。
さっそく拝見させて頂きます。
xさん、相変わらずの早業、ありがとうございます。
aragoのpop3関数、サザンの掲示板にも書きましたが、どうにもうまくいきません。
今、dllとpop3.prgをダウンロードしたところです。
明日は自宅に戻りますので、ゆっくりテストさせていただきます。
それにしてもSPAMうるさいですね。
投稿者:x 投稿日:11月03日(水)16時39分41 [375]
mail001.dllをなおしてpop3.prgを置きました通信エラーの場合はタイムアウトするまで10秒以上待ってくださいRETRするだけで添付ファイルは作りません大丈夫と思いますが危険なメールに注意!
私の場合はONでOKなんですが
うーん
よくわかりません。
報告 投稿者:inaba 投稿日:11月02日(火)13時24分54秒 [372]
Tiny+Zeroのその後の報告です。
仮想ハブの基本設定で「認証機能OFF」にしたら、一応zeroが動きました。
仮想ハブのないアダプタだけのPC(WinX)にzeroサーバ+仮想ハブのあるPC(win7)にzeroクライアントでOK。
その逆はだめでした。PCの能力の問題かなあ・・。
まだ旅先なので、No.368はローカルLAN内でのテストです。
No.368の設定のまま(zeroも起動)仮想ハブの「接続状況の表示」を見ると、以下2行表示。
---------------------------------------------------------------------
[adap1]127.0.0.1:50029 acaunt1 -Global- 154KB 568KB --(DHCP振出)
[LAN]192.168.25.70:2817 acount1 -Global- 594KB 199KB --
---------------------------------------------------------------------
50029 2817 というポート番号が気にはなりますが、接続できてるような・・。
でもし接続できているとすれば、疑問は、
zeroクライアントの「接続先アドレス」に、サーバのローカルの192.168.25.51を設定するとサーバのデスクトップが見えるし操作もできるのですが、サーバ側アダプタに設定した192.168.200.1を接続先に指定しても何も見えないのは何故か?
ということです。
何か勘違いしてます?
VPNのサーバー設定が間違っているなら
私のサーバーには繋がるはずです
私のサーバーにも繋がらないなら
クライアントのセキュリティか何かです
試してみますか ?
仮メール gomi@syaruru.com
に都合のいい時間をお知らせ頂ければ
開放しますよ、
使用IPは200.1から200.100 にしていますが
そのほかはほぼ同じ設定です。
アカウント設定はされていますよね
ZEROの設定はVPNが解決できてからするとして
下の説明からZEROを省いていただけると
分かりやすいです、すみません。
同一ローカル内でVPNのクライアント側の設定ですが
接続先は名前では接続できません、ローカルアドレスとなります。
クライアントはインターネット越しのマシンではないのですか?
kourogiさん、時間がとれたら教えてください。
物理的に繋がっているLAN内でTinyVPN+zeroの設定についてです。
ルータ 192.168.25.1
サーバ 192.168.25.51
クライアント 192.168.25.70
●サーバ上にTinyのハブとTinyのアダプタとzeroのサーバ設定 ポート:9999
ハブ 「DHCPサーバになる」→192.168.200.1から192.168.200.254
アダプタ 「次のIPアドレスを使う」→192.168.200.1
zeroサーバ 192.168.200.1 ポート:51512
●クライアント上にTinyのアダプタとzeroのクライアント設定
アダプタ ホスト名:192.168.25.51 「次のIPアドレス」→192.168.200.2
zeroクライアント 接続先アドレス:192.168.200.1 ポート:51512
★以上を実行しても、クライアントからサーバのデスクトップは見えません。
★zeroクライアントの接続先アドレスを物理的アドレス192.168.25.51にすれば見えます(Tinyを使ってないので当然ですか)。
★上記の設定はまちがっているのでしょうか?
クライアントから、192.168.200.1へのpingは通ります。
メルトダウン 投稿者:inaba 投稿日:11月01日(月)09時58分36秒 [367]
それぞれのdialogをオープンするfunctionとそれらをdeacivate+releaseするfunctionに切り分けて、上流から下流に向かってに順にfunctionを呼び出していくようにしてみてはどうですか?
えっ! pop3
ダメなんですか
まだテストも骨格もありません
Xさんの言われるムダなウインドゥの重なりがないか
チエックしてて思うのですが、新しくダイアログを出そうとすると
落ちますね、
でも再現しようと、落ちたところを何度繰り返しても落ちないのですよ、
ほんとに 難しいです。
試してみましたが、POP3関数、期待通り動いてくれませんね。
> 受信メールを2分ごとに監視し
> 受信した内容によって
> データー計算後
> 結果を送信する
pop3()関数を使うのですか?
inabaさんありがとうございます、
aragoiは持っていませんので
受信メールを2分ごとに監視し
受信した内容によって
データー計算後
結果を送信する形しか
現在の私のレベルではないようです。
掲示板スパム 投稿者:inaba 投稿日:10月29日(金)20時21分22秒 [362]
xさん、どうやら自動書き込みスパムじゃないみたいでしょうか。
ちょっと安心。
> ポートは25 指定ではなく自由に変更できるということでしょうか、
xさんに代わって私が書き込むのもいかがかとは思いますが、そのとおりです。
ARAGOのsendmailは25番ポートだけしか対応してませんから。
> 携帯からの売上在庫の問い合わせに自動応答するシステムの着手です
sendmailもxさんのdllもaragowでもaragoiでも使えると思いますが、
携帯サイトのフォームを利用した問い合わせに動的に変化する在庫を
「完全自動」でメール返信するということなら、
ARAGOIを使うのが簡単だと思います。
ただ、
1)在庫DBFの更新がARADOWシステムでリアルタイムになされていること
2)レンタルサーバのOS上でARAGOIが動くかどうか
が、大問題ですね。
ちなみに私の場合は、DDNSでアドレス解決して、サーバは自宅のWIN2Kノート、そこにWin版ARAGOIを乗っけて、ある出版社の書籍注文まで処理しています。
注文者と出版社に注文フォーム入力から自動メール配信します。
> ZEROのポートは自動で設定されます、何も変更することはありません
了解しました。サーバ側の静的NATだけでOKということですね。
今のところ、本当に仮想ハブが「起動」しているかどうか、確認のしようがないので・・。
投稿者:x 投稿日:10月29日(金)18時09分01 [359]
自動応答システムはPHPやPerlなどのサンプルがあると思いますが私にはわからないです
xさんの開発されたmail001.dllですが
ポートは25 指定ではなく自由に変更できるということでしょうか、
サンプルのプロシジャーはそのままでコピってOKでしょうか
メーカーが携帯からの売上在庫の問い合わせに自動応答するシステムの着手です
メール返信だけではなく、FTPにアップして携帯サイトを都度更新することも
考えられますが、
今は仕様が固まっていません。ちなみにaragoiは持っていません。
レンタルサーバーはあります。アドバイスご教授下さいませ。
ZEROのポートは自動で設定されます、何も変更することはありません
そもそも、ZEROはローカルLAN内で作動し、インターネットを利用する場合は
VPNで接続され、ローカルなIPを、またはマシン名で指定したPCのリモートを行います。
従ってZEROはLANで接続されているマシン同士しか利用できません。
inabaさんはVPNと混同されていますよ、ZEROは全く何もしなくても、セキュリティだけ許可しておけば設定は何もありません。
問題はVPNのシモウサのシステムです。ファイアウォールだとか、他のセキュリティの障害はありませんか
操作する(クライアントPC)のルーターは関係ありません、セキュリティだけクリアしていればOKです。
接続ハブのPC(サーバーで待機しているPC)に接続しているルーターは
静的NATの設定が必要です。
クライアントで指定したホートと同じポート番号でサーバー側ルーターが
受けなければいけません。
その折には、そのポート番号が静的NATで、ポート番号はもちろんそのまま、
IPはサーバーのマシンのローカルIPを指定するわけですよね
それができていれば、サーバーのハブの設定ではありませんか。
いまだに旅先で、VPNとZEROのテストはそこのLAN内でやってます。
ZEROの解像度の問題は、ホスト側1600X900をクライアント1024X768で表示させると見にくいようです。ホストとクライアントを逆にすると鮮明に見えました。
VPNとZEROのポートは同じにしたら、やはりだめでした。
仮想LANで両端がルータ越しの場合、サーバ側にVPNのポート番号(XXX)を静的NATでサーバに導くだけでZEROのポート番号(YYY)は解決できるのでしょうか?
それとも「ポート番号変換」(XXX→YYY)みたいな設定をしなければいけないのでしょうか?
1は 完全に通信速度によるものですから、モバイル系のネットでは遅さを感じますよね。
両方が光通信であれば、全画面表示しても、快適なんですが、
音声は消していますよね、
2.のポートですがVPNのポートとZEROのポートは一緒であってはいけません、
ZEROのポートは操作するためだけのポートであり、VPNとは関係ありません。
VPNはまだ繋がっていませんかね、VAIO内蔵のWIMAXでも、モバイルで外出先から快適に操作しています、
店舗からトラブルがあったときは、車をちょっと止めて繋げていますよ。
を入れてみました。LAN内では問題なく動きました。リモート操作はやったことありませんでしたので、ちょっと感動しました。
kourogiさんに質問です。
1)クライアント側のモニターに写るサーバのデスクトップの解像度が非常に悪いのですが、実際に細かい操作をするにはやや困るんじゃないかと思いますが。どうされていますか?
2)simousa+zeroremoteで使う場合は、ポート番号は同一のものにしなければならないのでしょうか?
kourogiさん、コメントありがとうございます。その後、ARAGOのごきげんはいかがですか? やはりこまめにreleaseすることが大切かと。
VPNですが、ルータの静的マスカレード、グローバルIPのDDNS解決、すべてOKのはずです。ウィルスチェッカーは入れてません(魚!)。
ひょっとしてハブをメモリーにロードしただけで、稼動してないのか・・? 何しろ旅先なので確かめようがありません。
すみません、いいかげんな質問で。
うまく動くようになったら、ZERORemote試してみます。
原因は多伎にわたって考えられます、
1.ルーターを通している場合、サーバーでポートの変換は指定されていますか
ポートを7777とした場合、ルーターの静的IPマスカレード設定をルーターにてエントリします、
サーバーのローカルIPアドレスが192.168.1.2なら
変換ポートを7777に、あて先ポートも同じ、
でも行き先は192.168.1.2に設定しておかないと、
グローバルIPでルーターに飛び込んできたあと、
どのパソコンに行けばいいのか指示が必要です。
2.クラアント側のホスト名またはIPアドレスは固定されていますか、DICEなどを使ってDNSの更新をかけてIPの変更をしてやらないと、グローバルIPは変わってしまいます。
3.その他ほとんどの場合がセキュリティソフトです。停止してからセキリティを終了し、試してみて下さい。
4.あとはVPNのヘルプを見て、設定が合ってるか確認してください。
このVPNソフトと ZERORemote というリモートソフトで自宅のパソコンを
会社のPCに出して、自由自在に操作ができ、とても快適です。
kourogiさんご推奨のsimousaですが、旅行前に自宅のサーバにハブを設定し、
旅先から繋ごうとしてもうまくいきません。
同じような設定で、本物のLANではうまくいきます。
どんなことが考えられるでしょうか?
デバイスマネージャで調べたら、カメラの名前みたいなものと、それを動かすドライバというかソフトの名前みたいなものの2つがありました。
私の試したのはカメラの名前(hoge CAM)で、これは落ちちゃいます。
もうひとつの方(fugaSoft mm Manager)で試したら、すんなりキャプチャ画像ができてました。
この2つのデバイス名はどういう関係なんでしょうか?
投稿者:x 投稿日:10月27日(水)12時36分55 [349]
Win7ではためしていません内臓WEBカメラでもokです何もせずに正常終了するのはデバイス名が違っているのでしょうデバイスマネージャのビデオのところでデバイス名を確認してみてください
あいかわらず旅先ですが、内臓WEBカメラのついたWin7が使えるので、
以前、xさんが作られたcaputure関数を試してみました。
カメラを起動しておいて、
EXTERN CVOID capture(CSTRING,CSTRING,CINT) capture001.dll
capture('hoge CAM','sample.bmp',700)
を実行したら、ARAGOが落ちちゃいました。
カメラを起動せずにdoすると、何もせずに正常終了します。
外付けデバイスじゃないとだめなのでしょうか?
第2掲示板 投稿者:inaba 投稿日:10月26日(火)21時44分53秒 [347]
せっかくのxさんの掲示板、あまり知られていないのが残念ですが、ARAGO仲間で知っている人にはとても貴重なものと思います。
セキュリティー強化した第2掲示板ということにはなりませんか?
いま旅行中で、思うようにPCあやつれないのですが、閉鎖は思いとどまっていただければ幸いです・・。
投稿者:x 投稿日:10月26日(火)13時50分10 [346]
inabaさんわざわざありがとうございますみなさんの貴重な書き込みがもったいなく申し訳ないのですが閉鎖しようと思っています
掲示板スパム 投稿者:inaba 投稿日:10月26日(火)12時19分56秒 [345]
xさん、掲示板スパムじゃないでしょうか?
検索してみると、board.cgi名の変更、掲示板へのリンクをJavascriptで処理、というのがありました。↓
http://antispam-bbs.xii.jp/index.html
今はプログラムが頻繁に変わるのでコンパイルしていませんでした
そのためARAGOW.INIのことしか思いつきませんでした。
すみません、もう少し言葉を考えて質問します、申し訳ありませんでした。
投稿者:x 投稿日:10月24日(日)15時14分42 [342]
INIファイルについての私の下記の書き込みはコンパイル後のsample.exeのsample.iniについてのことですコンソール画面が使えない!などとARAGOW.INIを変更するというのはまったく想定外です
PRIVATE宣言、PUBLIC宣言がセーブされているのかがわかりませんリストアするとPRIVATE、PUBLICのどちらになるのかもわかりません
kourogiさんの書き込みの内容が難しいものと初歩的なものと混じるので答えにくいです
以下ではメモリのそうじだけではなく
プライベート宣言もクリアされてしまうのでしょうか
メモリがうまく戻りません
rest from <> addi を追加にしていますが
初期化にしても同じです。
* DEACTIVATE DIALOG HyojiPNL
* SAVE TO TEMP.mem ALL
* CLEA MEMORY
* REST FROM TEMP.mem addi
* ACTIVATE DIALOG HyojiPNL modeless
はい、正常な位置に戻りました、アラゴの枠も表示されません。
ただ、コンソール画面が使えないので、
納品時にこのように設定すればOKですね。
コンパイルしても、この設定にしておかないと
枠は出てしまうのでしょうか。
投稿者:x 投稿日:10月21日(木)23時01分30 [337]
MainWindowがみっともなく表示されるということで表示位置を3000(水平位置),2000(垂直位置)と画面の外に出しました
MainWindowPos=0,1,-1,-1,-1,-1,0,-40,0,0
とするとどうですか?読み取り専用に変更しなくてもokのようです
見えないようになりますが
ダイアログが、サブモニターのほうに写ります
1024*720と800*600の2モニター使用になっていて
ダイアログを開くと、この2つのモニターの真ん中に表示されてしまいます。
xさん、今iniファイルご指導どおりにしてみました
前回、見えないように修正してしまったので
元に戻してみます。
バックパネルといえども、1枚のダイアログを減らせるので
意義ある対策です。
投稿者:x 投稿日:10月21日(木)16時01分08 [333]
基幹のダイアログをdeactivateしたら再度activateするまでaragowが表示されませんか?と書きましたが
xxx.iniファイルを
[Windows]
MainWindowPos=0,1,-1,-1,-1,-1,3000,2000,0,0
などと編集してiniファイルのプロパティを読み取り専用に変更するとMainWindowを非表示にすることができますね
メモリについてはできるだけそれぞれ個別のexeにして起動するexeは1つだけにしてその都度起動終了するのほうが確実だと思います
投稿者:x 投稿日:10月21日(木)09時33分21 [329]
aragowのダウンの原因がわかりませんがSAVE TO、CLEAR ALL、RESTORE FROMでダウンが解消されればいいと思います
みなさん本当にありがとうございます
私なんかの為に、こんなに指導頂けて感謝します。
inabaさん そこまでありません、せいぜい20ほどです。
xさん メモリをSAVEして all clea で消去して リストアするのではダメなんでしょうか
投稿者:x 投稿日:10月19日(火)14時40分56 [325]
特にレジの途中で落ちるのが最悪のPOSレジスタは個別のexeとする
できるだけそれぞれ個別のexeにして起動するexeは1つだけにしてその都度起動終了することで以前にあった下記のようなことも改善するかもしれません
時間があいたときに、メモリを整理するというのか
いったんメモリをセーブして、クリーンにする処理をしてアラゴを再起動してメモリを戻す的なこと
メモリについては1日に何回かaragowを再起動すれば済むことなのかも
ARAGOの制限 投稿者:inaba 投稿日:10月19日(火)11時45分43秒 [322]
> exeは1本
> その2つのexeの中には、同じプログラム部分がある
set udf なり set procedure に共通プログラムを入れて、まるごとコンパイルというイメージですね。
まさかとは思いますが、1つのファイルに入れられるプロシージャやUDFは193までという制限違反・・ってことはありませんか?
exeは1本
処理別にexeを作ると、どのexeでも使う共通の処理プログラムは
それぞれのexeに入れてやら無いといけないという意味です
他にも納品伝票を見てたら、3行目の品番の商品の行方を調べたいときに
3行目のボタンで在庫情報のプログラムが起動するのですが
納品伝票exeの中から情報exeを呼び出すことになる、
その2つのexeの中には、同じプログラム部分があるのに
2つexeを実行することになります。
DOSのころは、そんな贅沢なメモリの使い方はできませんでしたから
そのクセがあるのでしょうね、
考えればwindowsのメモリは桁違いですから。
プログラム設計 投稿者:inaba 投稿日:10月19日(火)06時23分57秒 [320]
> 個々の処理が繋がっているのはメニューだけで
> 基本的には1処理が終了すると、このメニューに帰ってきます。
メニューも含めてexeは1本? それともメニューから個別exeを呼び出す?
> 各処理 共通で使用するプログラムが多く、1本に繋げています。
これ、どういう意味でしょう?
315はスルーでいいですよね
個々の処理が繋がっているのはメニューだけで
基本的には1処理が終了すると、このメニューに帰ってきます。
on error の設定があり、ログを残して retu to masterとしてエラー対策しています。
各処理 共通で使用するプログラムが多く、1本に繋げています。
トランザクション処理でやってます。
たとえば 納品伝票ファイルは自店のクライアントである店舗レジに登録し
サーバーにも送信してサーバーの納品ファイルにも追加されます
もし、サーバーが切れていたら、自店のクライアントPCの納品ファイルにフラグをたてて、通信再会時に送信します。
従ってクライアントの納品ファイルにはその店舗のみの
サーバーには全店のデーターがあります。
投稿者:x 投稿日:10月19日(火)00時54分53 [317]
VPNを利用するにしてもaragowは銀行のATMのようなトラ ンザクション処理はできません1台のPOSレジスタに1個のデータベースやインデックスを割り当ててスタンドアローンで動かしレジ業務終了後に各POSレ ジスタに割り当てたデータベースを集計してインデックスを再構築し各POSレジスタに割り当てるデータベースやインデックスを再セットし1日の業務を終了 するという流れでしょうか
PCは壊れますからinabaさんが「やらせる仕事が、システムとして組みあがってない個別のプログラムなら・・・」というように納品入力、正札タグ発 行、返品、店舗移動、たな卸し、日報精算、顧客管理、在庫管理、タイムカードと出勤表、出勤予定表、POP管理はできるだけそれぞれ個別のexeのほうが安全でいいと思いますinabaさんのいう「処理する個々のプログラムがシステムとしてみんな繋がっている」ですとメインテナンスが気が遠くなるでしょうし最悪全部ダウンし業務が停止します
315の書き込みは何なのでしょう???
311のプログラム
とてもスムーズに開きます
流れは分かるのですが
システムの変更は自信がありません
不要なダイアログを調査してみます。
SHIMOUSAのVPNは 他の有料VPNより安定しており
DICEでDNSを固定してIPを更新しています。
\\nagoya\data\
のように、通常のLANと、同一でOKです
しかも光なら超早い、POSデータもこれで送信しています。
以前は店舗BGMも配信していましたがJASRACを打ち切ったので
BGMはなくなりました。
inabaさん、能力ないなんてとんでもない、またパスは残念です。
レジ屋が作るPOSレジと違って、現場でのユニークな発想がいっぱいつまったPOSレジは
当初1台50万で買って3ヶ月でお蔵入りになったPOSレジより
作業手順そのものは自信あるのですが
プログラムには自信がない
xさん inabaさん がまず、どんなものかだけでも
見ていただければ、アクロバットプログラムは
指摘だらけであること間違いなし の自信ありです。
予備用の単独テストマシンが用意してあり、
VPNで接続して頂けたら、自由に見ることができます。
インターネットVPN 投稿者:inaba 投稿日:10月18日(月)10時02分18秒 [313]
> 一度見ていただいて、助言頂けないでしょうか
kourogiさん、能力ありませんので私はパスですが・・。
もし、やらせる仕事が、システムとして組みあがってない個別のプログラムなら、使ってないプログラムは閉じてしまえばいいような気がしますが・・。
処理する個々のプログラムがシステムとしてみんな繋がっているのなら、組み替えるのは気が遠くなるような作業ですね。
それにしても、インターネットVPN、まったく知りませんでした。
ARAGOで作ったLAN対応プログラムが実際のLANと同じように動くのならすごいですねえ・・。
インターネット越しのPRGはhttpを使ったaragoiとaragowの連携しか考えたことがありませんでした。
kourogiさんのお困りの問題とは無関係な話で恐縮ですが、ちょっと勉強してみようと思います。
実際のシステムはPOSレジに納品入力、正札タグ発行、返品、店舗移動、たな卸し、日報精算、顧客管理、在庫管理、タイムカードと出勤表、出勤予定表、POP管理、すべてが処理されます、
http://www.shimousa.com/tv/tv5.htm のVPNを利用して4店舗と倉庫が繋がっています。
一度見ていただいて、助言頂けないでしょうか、もちろん報酬は別途ご相談させて頂きます。gomi@syaruru.com は私の一時アドレスです。
最近は年のせいか、頭の回転のにぶりを感じます。
投稿者:x 投稿日:10月17日(日)13時39分39 [311]
*ダイアログのサイズを変えた場合
*ダイアログだけでアプリケーションの骨格を作る
Extern CINT GetSystemMetrics(CINT) USER32.DLL
Title_H = GetSystemMetrics(4)
store 0 to flag04
define dialog dialog01 at -Title_H, 0.0 size Title_H+_VSIZE,_HSIZE NOSYSTEMMENU NOCLOSE NOMOVE color 255,255,255
define dialog dialog02 at _VSIZE*0.1, _HSIZE*0.1 size _VSIZE*0.8,_HSIZE*0.8 NOSYSTEMMENU NOCLOSE NOMOVE color 255,255,255
define dialog dialog03 at _VSIZE*0.18, _HSIZE*0.18 size _VSIZE*0.64,_HSIZE*0.64 NOSYSTEMMENU NOCLOSE NOMOVE color 255,255,255
define dialog dialog04 at _VSIZE*0.1, _HSIZE*0.1 size _VSIZE*0.8,_HSIZE*0.8 NOSYSTEMMENU NOCLOSE NOMOVE color 255,255,255
define dialog dialog05 at _VSIZE*0.18, _HSIZE*0.18 size _VSIZE*0.64,_HSIZE*0.64 NOSYSTEMMENU NOCLOSE NOMOVE color 255,255,255
define dialog dialog06 at _VSIZE*0.244, _HSIZE*0.244 size _VSIZE*0.512,_HSIZE*0.512 NOSYSTEMMENU NOCLOSE NOMOVE color 255,255,255
define text text01 of dialog01 at 20,20.0 prompt "基幹"
define text text01 of dialog02 at 20,20.0 prompt "子"
define text text01 of dialog03 at 20,20.0 prompt "孫"
define text text01 of dialog04 at 20,20.0 prompt "ひ孫→子"
define text text01 of dialog05 at 20,20.0 prompt "孫"
define text text01 of dialog06 at 20,20.0 prompt "ひ孫"
define pushbutton s1 of dialog01 prompt "表示" at 100.0,80.0 size 20.0,60.0
define pushbutton s2 of dialog01 prompt "終了" at 100.0,160.0 size 20.0,60.0
on selection dialog dialog01 function01()
define pushbutton s1 of dialog02 prompt "表示" at 100.0,80.0 size 20.0,60.0
define pushbutton s2 of dialog02 prompt "戻る" at 100.0,160.0 size 20.0,60.0
on selection dialog dialog02 function02()
define pushbutton s1 of dialog03 prompt "表示" at 100.0,80.0 size 20.0,60.0
define pushbutton s2 of dialog03 prompt "戻る" at 100.0,160.0 size 20.0,60.0
on selection dialog dialog03 function03()
define pushbutton s1 of dialog04 prompt "表示" at 100.0,80.0 size 20.0,60.0
define pushbutton s2 of dialog04 prompt "戻る" at 100.0,160.0 size 20.0,60.0
on selection dialog dialog04 function04()
define pushbutton s1 of dialog05 prompt "表示" at 100.0,80.0 size 20.0,60.0
define pushbutton s2 of dialog05 prompt "戻る" at 100.0,160.0 size 20.0,60.0
on selection dialog dialog05 function05()
define pushbutton s1 of dialog06 prompt "終了" at 100.0,80.0 size 20.0,60.0
define pushbutton s2 of dialog06 prompt "戻る" at 100.0,160.0 size 20.0,60.0
on selection dialog dialog06 function06()
activate dialog dialog01 modal
return
function function01
do case
case PANEL()="S1"
activate dialog dialog02 modal
do case
case flag04=1
activate dialog dialog04 modal
store 0 to flag04
endcase
case PANEL()="S2"
deactivate dialog dialog01
endcase
return .t.
function function02
do case
case PANEL()="S1"
activate dialog dialog03 modal
case PANEL()="S2"
deactivate dialog dialog02
endcase
return .t.
function function03
do case
case PANEL()="S1"
deactivate dialog dialog02
deactivate dialog dialog03
store 1 to flag04
case PANEL()="S2"
deactivate dialog dialog03
endcase
return .t.
function function04
do case
case PANEL()="S1"
activate dialog dialog05 modal
case PANEL()="S2"
deactivate dialog dialog04
endcase
return .t.
function function05
do case
case PANEL()="S1"
activate dialog dialog06 modal
case PANEL()="S2"
deactivate dialog dialog05
endcase
return .t.
function function06
do case
case PANEL()="S1"
deactivate dialog dialog04
deactivate dialog dialog05
deactivate dialog dialog06
case PANEL()="S2"
deactivate dialog dialog06
endcase
return .t.
投稿者:x 投稿日:10月17日(日)01時53分40 [310]
長時間動かし続けるための方法がないかと言うことです
kourogiさんのアプリケーションを一度試験的にダイアログをお互い隠れないように小さく変更して動かしてみてダイアログの親子関係などがどう動いているのかダイアログの系統図を作ってみるとプログラムの構造が明確になると思います
いつまでも表示されている不要なダイアログがないか
一度に表示されているダイアログの数が多すぎないか
先へ先へと進む一方のプログラムならばメモリのゴミ(利用されないメモリ)が徐々に増えるのではないか
などダウンに関係するかもしれないと勝手に考えました
303はあくまで参考でkourogiさんのアプリケーションに当てはまるのかはわかりません(何度も見当違いしていますので;exeが2つ使われているのであればすでに当てはまりませんね)
xさんの言われるのは、ダイアログが重なることより、
基幹で一括定義しておいて、処理をプロシジャーで飛ばして終了したら帰らせることですね
307->基幹のダイアログをdeactivateしたら再度activateするまでaragowが表示されませんか?
そうなんです、みっともなくされます。
比較的簡単な処理部分から307型にしてみます。
投稿者:x 投稿日:10月16日(土)19時11分54 [307]
基幹のダイアログをdeactivateしたら再度activateするまでaragowが表示されませんか?そこですべての処理をするというのは複雑でわかりにくいと思いましたが人ぞれぞれなのでしょう
303は基幹から派生して必ず基幹に戻るプログラム(系統的なダイアログとなる)の例で骨格さえできればそこはさわらないであとはそれぞれのダイアログでの処理をプログラミングするだけですkourogiさんの個々のダイアログをそのままはめ込めばいいかと思います
303のプログラムは理解できますが
かなり整理して記述しないと
2度とさわれなくなりそうですね
302>>
以下のように基幹のダイアログを閉じてから
処理を実行するようにしたのですがダメでしょうか
m_PANEL=""
DO WHIL .T.
ACTIVATE DIALOG POP__PNL MODAL
DO CASE
CASE m_PANEL="戻る"
EXIT
CASE m_PANEL="処理"
DO 処理
ENDC
ENDD
cancel
FUNCTION NPane030
m_PANEL=PANEL()
DEACTIVE DIALOG POP_PNL
RETERN .T.
投稿者:x 投稿日:10月16日(土)09時48分25 [303]
*ダイアログだけでアプリケーションの骨格を作る
store 0 to flag04,flag07
define dialog dialog01 at 100.0, 100.0 size 210.0, 297.0 color 255,255,255
define dialog dialog02 at 100.0, 400.0 size 210.0, 297.0 color 255,255,255
define dialog dialog03 at 100.0, 700.0 size 210.0, 297.0 color 255,255,255
define dialog dialog04 at 300.0, 100.0 size 210.0, 297.0 color 255,255,255
define dialog dialog05 at 300.0, 400.0 size 210.0, 297.0 color 255,255,255
define dialog dialog06 at 300.0, 700.0 size 210.0, 297.0 color 255,255,255
define dialog dialog07 at 500.0, 100.0 size 210.0, 297.0 color 255,255,255
define text text01 of dialog01 at 20,20.0 prompt "基幹"
define text text01 of dialog02 at 20,20.0 prompt "子"
define text text01 of dialog03 at 20,20.0 prompt "孫"
define text text01 of dialog04 at 20,20.0 prompt "ひ孫→子"
define text text01 of dialog05 at 20,20.0 prompt "孫"
define text text01 of dialog06 at 20,20.0 prompt "ひ孫"
define text text01 of dialog07 at 20,20.0 prompt "ひ孫→子"
define pushbutton s1 of dialog01 prompt "表示" at 100.0,80.0 size 20.0,60.0
define pushbutton s2 of dialog01 prompt "終了" at 100.0,160.0 size 20.0,60.0
on selection dialog dialog01 function01()
define pushbutton s1 of dialog02 prompt "表示" at 100.0,80.0 size 20.0,60.0
define pushbutton s2 of dialog02 prompt "戻る" at 100.0,160.0 size 20.0,60.0
on selection dialog dialog02 function02()
define pushbutton s0 of dialog03 prompt "表示1" at 100.0,40.0 size 20.0,60.0
define pushbutton s1 of dialog03 prompt "表示2" at 100.0,120.0 size 20.0,60.0
define pushbutton s2 of dialog03 prompt "戻る" at 100.0,200.0 size 20.0,60.0
on selection dialog dialog03 function03()
define pushbutton s1 of dialog04 prompt "表示" at 100.0,80.0 size 20.0,60.0
define pushbutton s2 of dialog04 prompt "戻る" at 100.0,160.0 size 20.0,60.0
on selection dialog dialog04 function04()
define pushbutton s1 of dialog05 prompt "表示" at 100.0,80.0 size 20.0,60.0
define pushbutton s2 of dialog05 prompt "戻る" at 100.0,160.0 size 20.0,60.0
on selection dialog dialog05 function05()
define pushbutton s1 of dialog06 prompt "終了" at 100.0,80.0 size 20.0,60.0
define pushbutton s2 of dialog06 prompt "戻る" at 100.0,160.0 size 20.0,60.0
on selection dialog dialog06 function06()
define pushbutton s1 of dialog07 prompt "終了" at 100.0,80.0 size 20.0,60.0
define pushbutton s2 of dialog07 prompt "戻る" at 100.0,160.0 size 20.0,60.0
on selection dialog dialog07 function07()
activate dialog dialog01 modal
return
function function01
do case
case PANEL()="S1"
activate dialog dialog02 modal
do case
case flag04=1
activate dialog dialog04 modal
store 0 to flag04
case flag07=1
activate dialog dialog07 modal
store 0 to flag07
endcase
case PANEL()="S2"
deactivate dialog dialog01
endcase
return .t.
function function02
do case
case PANEL()="S1"
activate dialog dialog03 modal
case PANEL()="S2"
deactivate dialog dialog02
endcase
return .t.
function function03
do case
case PANEL()="S0"
deactivate dialog dialog02
deactivate dialog dialog03
store 1 to flag04
case PANEL()="S1"
deactivate dialog dialog02
deactivate dialog dialog03
store 1 to flag07
case PANEL()="S2"
deactivate dialog dialog03
endcase
return .t.
function function04
do case
case PANEL()="S1"
activate dialog dialog05 modal
case PANEL()="S2"
deactivate dialog dialog04
endcase
return .t.
function function05
do case
case PANEL()="S1"
activate dialog dialog06 modal
case PANEL()="S2"
deactivate dialog dialog05
endcase
return .t.
function function06
do case
case PANEL()="S1"
deactivate dialog dialog04
deactivate dialog dialog05
deactivate dialog dialog06
case PANEL()="S2"
deactivate dialog dialog06
endcase
return .t.
function function07
do case
case PANEL()="S1"
deactivate dialog dialog07
case PANEL()="S2"
deactivate dialog dialog07
endcase
return .t.
投稿者:x 投稿日:10月16日(土)05時12分25 [301]
DO WHIL .T.
ACTIVATE DIALOG POP__PNL MODAL
DO CASE
CASE m_PANEL="戻る"
EXIT
CASE m_PANEL="処理"
DO 処理
ENDC
ENDD
上記ではDEACTIVATE DIALOG POP__PNL MODALされなければ処理が行われない
処理は前のようにFUNCTION NPane030の中で
FUNCTION NPane030
DO CASE
CASE m_PANEL="戻る"
* EXIT
CASE m_PANEL="処理"
DO 処理
ENDC
RETERN .T.
でいいのでしょう
こんな感じに変えました
DEFINE DIALOG POP__PNL
・
DEFINE BMPB POPEDIT
DEFINE BMPB modoru
ON SELECTION DIALOG POP__PNL NPane030()
m_PANEL=""
DO WHIL .T.
ACTIVATE DIALOG POP__PNL MODAL
DO CASE
CASE m_PANEL="戻る"
EXIT
CASE m_PANEL="処理"
DO 処理
ENDC
ENDD
RELEASE DIALOG POP__PNL
RETU
----------
FUNCTION NPane030
m_PANEL=PANEL()
do case
EXEは2つ出ています、気になっていました
基幹のプログラムの中で関数やプロシジャーを多用しています。
投稿者:x 投稿日:10月16日(土)01時32分04 [294]
EDIT_PNLがPOP__PNLの裏に回る場合がありますダイ アログが裏に回ったときはALT+TABで元に戻せるのですとありますが[Alt]+[Tab]はアプリケーションを切り替える操作ですからもしそうなの であれば一つのexe内でEDIT_PNLとPOP__PNLのdialog同士で裏に回るということではなくEDIT_PNLとPOP__PNLの exeが両方起動されていてexe同士で表になったり裏になったりするということになりますdialog同士を想定した私の下記の書き込みはまた見当違いとなりますアクロバットプログラムとは出発点に戻ることなく先へ先へと進む一方のプログラムなのでしょうか・・・使用するダイアログだけでアプリケーションの骨格を作れればわかりやすくなるでしょうかその際ダイアログを画面全体に表示すると表示されたまま残ってしまうなどのダイアログの関係が確認できないのでお互い隠れないように小さいダイアログで表示してみるのがいいと思います
投稿者:x 投稿日:10月14日(木)18時31分42 [289]
メモリについては1日に何回かaragowを再起動すれば済むこと なのかもしれません。そうしないで長時間動かし続けるための方法がないかと言うことです。基幹のDIALOG→子→孫→ひ孫で自身がひ孫でも子、孫を DEACTIVATEすれば自身が子に昇格すると思います。
そこらあたりが
inabaさんがおっしゃったアクロバットプログラムなので
原因として十分に考えられます。
286->メモリの宣言をきちんとしておくことは
使用するメモリについても、初頭でPRIVATE宣言が必要でしょうか
1つのプログラムにまとめると、6000行を超えます。
私の頭が超えれないような・・・
投稿者:x 投稿日:10月14日(木)09時32分59 [286]
以下aragowのダウンやEDIT_PNLがPOP__PNLの裏に回るに関係がありそうなことを推測しました
押されたボタンによって2つ目のDIALOGの仕様が変わる場合
メモリの宣言をきちんとしておくことは重要かもしれません。ということでDIALOGの仕様が変わる場合でも一旦基幹のプログラム(基幹のDIALOG)で定義する(押されたボタンによって仕様が変わるところだけFUNCTION NPane030の中で再度変える)
押されたボタンによって次のプログラム(次のDIALOG)に飛んでいる場合
まとめてもまとめなくてもメモリ上は大きくなってしまうのでしょう
大きくなってしまってもまとめて基幹のプログラム(基幹のDIALOG)は一つにして店のロゴ表示(^∇^)そこから子プログラム(子のDIALOG)を 派生させ必ず基幹のプログラム(基幹のDIALOG)に戻してから(子や孫のDIALOGをDEACTIVATEしてから)次の子プログラム(子の DIALOG)に飛ぶようにする
DEFINE DIALOG をまとめる場合
1つ目のDIALOGで押されたボタンによって2つ目のDIALOGの仕様が変わる場合
同時に2つ目は設定しておけません
1つ目のDIALOGで押されたボタンによって次のプログラムに飛んでいる場合も
まとめるには大きくなってしまうので困難な状況です
まとめることの出来る部分はかなり少ないようです。
しかし、不要になったパネルはDEACTIVEするようにしてみます。
inabaさん すみません、説明が悪いものですから手間かけさせてしまって
ARAGO自体のブルーボーダーを消すために
画面いっぱいのダイアログを -26.0で 消しています。
コンパイルはしていません。
xさん 使用するパネルをまとめて 基幹のプログラムで定義してしまうということでしょうか、試行錯誤してみます
投稿者:x 投稿日:10月13日(水)03時46分15 [275]
Extern CINT GetSystemMetrics(CINT) USER32.DLL
Title_H = GetSystemMetrics(4)
DEFINE DIALOG POP__PNL at -Title_H, 0.0 size _VSIZE,_HSIZE NOSYSTEMMENU NOCLOSE NOMOVE
DEFINE DIALOG EDIT_PNL &&ここに入れればFUNCTION NPop_030の呼び出し回数に関係なく1回だけになりませんか
*
*
*
パネルの場合、開始Y座標をマイナスにすると
ブルーボーダーはそのままで
中のオブジェクトが上に上がって行きます。
マイナスの指定はダイアログで使用していますが
パネルにすると 表示されたままです
V6.2です。
Y軸は -28.0 ほどしていますが パネルにすると効果がありません。
マイナス表記 投稿者:inaba 投稿日:10月12日(火)20時34分09秒 [271]
> define panel p1 from -25.0, -4.0 としても
> 0,0から表示されてしまいます
マイナスを指定することによって青いメニューバーのようなものが見えないということです。
マイナスの値を大きくしてテストしてみてください。
ただ、モニターのプロパティで、WinclasicやXPやらで少しずつ異なります。
define panel p1 from -25.0, -4.0 としても
0,0から表示されてしまいます
コンパイルすると出ないのですか
> 以前は1つめのダイアログをパネルにしていたのですが
>上の青い帯が出ること、
コンパイルした後のEXEですか?
* panel定義
define panel p1 from -25.0, -4.0
のようにマイナスの値を設定すればOKでしょう。
> 指定もしていないのに メニュー・閉じる は勝手に出てくる
どうしても[X]を押されると困るときは以下のようにしています。
メインPRGに
on event "close" notclose()
UDFファイルに
* notclose
function notclose
wait("メニューまたはツールバーから終了してください。)
return .f.
そういえば、xさんのDLLにあったような・・。
記憶違いでしょうか?
ダイアログが裏に回ったときは
ALT+TABで元に戻せるのですが、
それを知らないスタッフは電源ごと切ってしまい
ハードディスクが壊れていきます。
でもご迷惑・・の時は すべてダイアログを重ねるときに起きています。
以前は1つめのダイアログをパネルにしていたのですが
上の青い帯が出ること、
指定もしていないのに メニュー・閉じる は勝手に出てくる
□_xのメニューはoffにしても出てくるなどで
使用していません
266>xさんの言われるのは253のプログラムだと
どのようになるのでしょうか。
投稿者:x 投稿日:10月12日(火)14時18分59 [266]
すいませんdialogについての私の書き込み見当違いだったようです
253のプログラムはこれでいいのしょうどうしてEDIT_PNLがPOP__PNLの裏に回るのかはわかりません
FUNCTION NPane030の中にDEFINE DIALOG EDIT_PNLがありDEFINE DIALOG EDIT_PNLが繰り返されることになるのでaragowのダウンに関係があるのかもしれません
できればプログラム内のすべてのDEFINE DIALOGをどこかでまとめて1回だけにするのはどうでしょう
> MODELEssのダイアログで押されたpushbuttonでEDT_PNLを出したい
無理だと思います。modelessはactivateされた瞬間に制御は次の行に移ると、
ヘルプに書いてあります。
画面いっぱいのpanelを作り、ボタンを押すと右X%にdialogを出せばどうでしょう。dialogを終了しない限り、panelに制御はわたらないはずですね。
inabaさんお手数おかけしました、
わざわざありがとうございます。
下記の例はバックスクリーンに使うだけなら分かるのですが
MODELEssのダイアログで押されたpushbuttonでEDT_PNLを出したいのですが
その工夫が飲み込めません。
> というと下記のプログラムの要領ではダメですね
> modelessのままloopしていないと
aragoのヘルプにはmodelessの例としてヘルプウィンドウを表示すると書いてあった気がします。
*---こんなふうにするとどうでしょう。
tp1="表示内容だけで\nイベント処理はしない\n ・\n ・\n "
DEFINE DIALOG POP__PNL at 0.0,0.0 size _vsize,_hsize
define text t1 of POP__PNL prompt tp1 at 10.0,10.0
ACTIVATE DIALOG POP__PNL MODeless
syori()
*--------
function syori
* イベント処理用ダイアログ
DEFINE DIALOG EDT_PNL at 100.0,100.0 size 300.0,500.0
DEFINE pushbutton s1 of EDT_PNL prompt "edit" at 10.0,10.0 size 20.0,60.0
DEFINE pushbutton s2 of EDT_PNL prompt "modoru" at 10.0,100.0 size 20.0,60.0
ON SELECTION DIALOG EDT_PNL NPOP_030()
ACTIVATE DIALOG EDT_PNL MODAL
RELEASE DIALOG EDT_PNL
RETU .t.
*-------------
FUNCTION NPop_030
do case
case PANEL()="S1"
* 処理
case PANEL()="S2"
DEACTIVATE DIALOG Edt_PNL
DEACTIVATE DIALOG POP__PNL
RELEASE DIALOG POP__PNL
endc
retu .t.
サーバ 投稿者:inaba 投稿日:10月12日(火)05時27分08秒 [261]
レンタルサーバにもいろいろなタイプがあるみたいですが、
プロバイダの無料WEBサービス(UNIX系OS+Apache)で試しましたら、
アクセス許可やらなんやら一切なしで、新しいディレクトリ作ってファイルほおりこんでアクセスできましたよ。
xさんのこのHPもそうですか?
inabaさん いろいろと詳しいのですね、
サーバーの件は私にはムリなのであきらめました。
要は、deactivateを、ボタンを押したら実行・
というと下記のプログラムの要領ではダメですね
modelessのままloopしていないと
modelessタイプのdialogはフツーにdeactivateするとあっというまに終了。
要は、deactivateを、ボタンを押したら実行・・みたいにすればずーっと出っ放しというわけです。
modelessを維持しながら、不要になったらdiactivateすればよいかと。
xさん ほとんどが新しいdialogを出そうとしたときに落ちます
ほぼ 間違いないと思います
inabaさん 1つめのPOP__PNLをmodelesにしてしまうと POP__PNLのBMPボタンは押せずに次のEDIT_PNLに移動してしまうのではないでしょうか
例えば下記のままで
ACTIVATE DIALOG POP__PNL MODELES だと、一瞬で retunで終了してしまいますよね
> dialog2のバックスクリーンは表示しておきたいからです
なら、modelesにすればいいのじゃ? 確信ありませんけど・・。
私はけっこう使ってますよ。
こんな感じです
DEFINE DIALOG POP__PNL
・
DEFINE BMPB POPEDIT
DEFINE BMPB modoru
ON SELECTION DIALOG POP__PNL NPane030()
ACTIVATE DIALOG POP__PNL MODAL
RELEASE DIALOG POP__PNL
RETU
----------
FUNCTION NPane030
do case
case PANEL()="POPEDIT"
DEFINE DIALOG EDIT_PNL
DFFINE PUSHB 処理1
DEFINE PUSHB 閉じる
ON SELECTION DIALOG EDIT_PNL NPOP_030()
ACTIVATE DIALOG EDIT_PNL MODAL
RELEASE DIALOG EDIT_PNL
case PANEL()="MODORU"
DEACTIVATE DIALOG POP__PNL
endc
RETU .t.
-------------
FUNCTION NPop_030
do case
case PANEL()=処理1
case PANEL()=閉じる
DEACTIVATE DIALOG Edit_PNL
endc
retu .t.
xさん いたるところに その影ありです
不安定な原因はそれですよ きっと
なぜ
deactivate dialog dialog1
activate dialog dialog2 modal
にしないかというと、dialog2のバックスクリーンは表示しておきたいからです
投稿者:x 投稿日:10月11日(月)18時30分11 [251]
ACTIVATE DIALOG POP__PNL MODAL+ACTIVATE DIALOG err__PNL MODAL
では不安定だと思います
deactivate dialog dialog1
activate dialog dialog2 modal
で一つだけ表示するか
activate dialog dialog1 modeless
activate dialog dialog2 modal
でdialog2を前に表示するか決めてやらないとWindows OSはどう動けばいいのかわからないと思います
結果的にご迷惑を・・・となってしまうのかもしれません
下記見れません
どうしたら すべてのファイルを自由にダウンできるようになるのでしょうか
syaruru.com/possystem
にプログラムと顧客以外の実データをアップしました、
c:\posdata を作ってダウン後 spos.prgがスタート
ポッププログラムはspop_030.prgです
不足ファイルのため うまく作動しないかもしれませんが
運営中のプログです
帳票系はまだできていません、サーバーから別管理しています。
ACTIVATE DIALOG POP__PNL MODALの中で
エラーメッセージとしてACTIVATE DIALOG err__PNL MODAL
を表示することは不安定でしょうか
投稿者:x 投稿日:10月11日(月)14時34分39 [247]
POP__PNLがACTIVATE DIALOG POP__PNL MODALの場合は
・・・MODALのダイアログはON SELECTION DIALOGで実行されるプログラムの中でDEACTIVATEしてください。・・・とするか
ACTIVATE DIALOG POP__PNL MODELESSにきりかえるかしないと・・・
POP__PNLがACTIVATE DIALOG POP__PNL MODALのままで残るとうまく動かないと思います
ACTIVATE DIALOG POP__PNL MODAL
ACTIVATE DIALOG EDIT_PNL MODAL
で
EDIT_PNL が POP__PNLの裏に回る場合があります、毎回ではありません
このプログラムだけではなく
他の時も ときどきあります。
投稿者:x 投稿日:10月11日(月)13時34分56 [245]
deactivate dialog dialog1
activate dialog dialog2 modal
で一つだけ表示するか
activate dialog dialog1 modeless
activate dialog dialog2 modal
でdialog1を後ろにするか
activate dialog dialog1 modeless
activate dialog dialog2 modeless
activate panel panel1 modal
で並べて表示するかでしょうか
画面いっぱいのdialog1上のボタンを押すと、80%くらいの大きさのdialog2が開くのですが、dialog1の裏で開いています。
ftp準備していますが、時間かかりそうです。
> dialogは2つ以上を全画面か80%くらいの枠で重ねて表示する
> dialogの原理は確かにそうなので、対策しようがないのです。
> 毎回ではありませんが、必ず起きています。
dialog1上のボタンを押すとdialog2が開くということですか?
両方ともmodalですか?
dialog2をオープンしたらdialog2にはフォーカスを移動できませんよね?
どういう状態なのか、想像がつかないのですが・・。
> syaruru.com でサーバーがあるのですが
>そこに、プログラムとサンプルデータを入れた
webサーバなら、置いてあるファイルのリンク先を教えていただければOKでは?
xさん、inabaさん
いつもありがとうございます
遠方に出かけていて遅くなりました。
xさん dialogは2つ以上を全画面か80%くらいの枠で重ねて表示する場合が多いです
DTOC は DTOS にしたほうが良い
INDEXにはDTOSを使用すること
の2つが 多くのPRGで該当しています
特にindexを変更するには
運用中なので大事になりますが、検討してみます。
browsは全く使用していません。
inabaさん
当たってます、すでにアクロバットです。
dialogの原理は確かにそうなので、対策しようがないのです。
毎回ではありませんが、必ず起きています。
syaruru.com でサーバーがあるのですが
そこに、プログラムとサンプルデータを入れたとして
inabaさん方が 自由に見ていただける環境にするには
どうしたらいいでしょうか。
aragoのダウンはやはりbrowse関連が多いように思います。
なので、browseは文字通り「表示」のためにしか使わないことにしています。
あと、Windowsの制限があるのをaragoのエラーと勘違いすることもあるかも・・?
とりあえず、あまり複雑でアクロバットみたいなPRGを書くと落ちたり・・。
kourogiさん、panelでは消えたりしますが、dialogでは原理的に不可能な気がしますが・・。
modalなdialogが有効なのは1つだけで、aragoではそれを閉じない限り別のdialogには異動できないように思いますが(テストしてません)。
panelならxさんのおっしゃるとおり、pnel1とpanel2をモニターの左右に配置すればOKかと・・。
投稿者:x 投稿日:10月08日(金)20時18分11 [240]
aragowのダウンの対策についてMishinaさんに送っていただいたものを書き込みます
アラゴを安定して使用するために 6.5 2.21
WINDWSE 2000 以上
メモリ 1GB 以上
以下は、私の少ない経験から得た教訓ですが、必ずしも全部が当てはまるとは思いませんが、ARAGOW が自分の意思に反してダウンする
ことを少しでも改善できればと思って書き込みます。
自分のプログラムの幼稚分は棚にあげてありますので、そこらへんは割り引いて見てください。但しプログラムの記述は正しいものとします。多分アラゴを使用している方は多かれ少なかれ経験があると思います。
VALIDで呼ばれるFUNC の中には「絶対」に WAIT を書かないこと。表示したい内容は 変数に与えAUTOで表示する
MESSAGEBOX は「使わない」こと。今大丈夫でも「必ず」影響が出る 出来るだけ自分で作ること YESNO.PRG
BROWSE の中で :R を「使わない」こと。NOMODIにする
BROWSE に直接入力はしないこと。編集は「別記述」のプログラムをすること
プロンプト brow では「データが破損する」ケースが多いので直接入力は避けるべき、ダイレクト入力は ver4.5に限る
set rela では brows で「修正を行わない」こと
define browse では field 「項目数」が多い場合はダウンする
seet を使ってbrow1 brow2と項目が多いばあい、フィールドをクリックすると落ちる
この場合 brow する field 数を減らすとダウンしなくなる
BROWSEの要約 BROWSE でのオプションは出来るだけ使用をしないこと
DTOC は DTOS にしたほうが良い
INDEXにはDTOSを使用すること
ここまでするとダウンはかなり改善される。ハズです。
なお これでも改善されない場合は、ダウンする場所に見当をつけて、プログラムの隙間に WAIT "1" WAIT "2" などを入れて探る
こうすることによりダウンする場所を付きとめる、その前後に SLEEP .2 とか SLEEP 1 を入れると大概のものは収まる
6.6
コマンドが変わっているのにHELPの説明が変わっていないので注意 (これはメーカーさんが忘れたのでしょう)
新しいコマンドはパネルペインタで記述できないので注意 (当然出来るべき問題)
ENTRYFIELD が前のバージョンと微妙に異なる
ENTRYFIELD で今入力した内容が突然消えることがある??
最初のENTRYFIELD で VALID が書いてあると、入力前であるのに VALID に入ってしまう。
投稿者:x 投稿日:10月08日(金)15時12分06 [239]
dialogは一つだけ表示するか並べて表示するかでしょうか
DEFINE DIALOGでNOCLOSE指定しても、その前に表示していたDIALOGの裏に
回ってしまうことがあるのですが、謎です。
Alt+TABキーで表示は戻りますが、どこかに行ってしまったDIALOGに
ユーザーが戸惑うようです、何か対処法はないでしょうか。
すみません、xさん
やはり私の勘違いでした
大変申し訳ございませんでした。
xさんすみません、対応していない訳ないですよね
もう一度そこのプリンターで確認してみます、
自宅はA3プリンターだったものですから、
私の大勘違いだと思います。
投稿者:x 投稿日:10月06日(水)23時17分02 [235]
A4プリンターでA4横の印刷はよく使うと思いますが横出力の対応がなく、とはプリンタドライバが対応していない(用紙設定にA4横がない)のですか
xさんお世話になります
アラゴのフォームでA4横でレイアウトしたものを
A4プリンターで出力ができないでしょうか
xさんの言われるように
プリンターはA4プリンターなので
directprnで横指定ができません
因数3番目を2にすると
プリンターはA4横出力は対応がなく、縦しかないので
縦のまま横のフォームで出力されてしまいます。
帳票も含めて横指定はなんとか欲しいものです
恐縮ではありますが、対策頂ければ幸いです。
フォント 投稿者:kourogi 投稿日:10月04日(月)17時43分01秒 [233]
inabaさん素早いご対応ありがとうございます
今 組み終わりました。
同じ要領で赤系とか青系とかできそうですね
ありがとうございました
フォント 投稿者:kourogi 投稿日:10月03日(日)20時36分37秒 [231]
inabaさん、
カラーピッカ-ですが、大変便利なので使わせて頂いているのですが
グレースケールのときに選択しやすいように
右の空いた所に白から黒までのグレースケールを追加出来ないでしょうか
時間があるときで結構です
xさんありがとうございます、
用紙A4で統一します。
投稿者:x 投稿日:10月03日(日)13時41分36 [230]
ARAGOWのPOBJECTSのEXTERNのフォルダにEXTERNコマンドの有効範囲は、宣言した場所から次のRETURNまでとなりますと書いてありましたエラーにならなければokと思います
directprnのA5指定の縦と横は単純にdirectprn('',11,1,0)とdirectprn('',11,2,0)ですが
プリンタにA5用紙がない場合はdirectprn()での指定が無視されデフォルトの設定(A4縦など)で印刷されると思います
フォントと印刷 投稿者:kourogi 投稿日:10月03日(日)12時29分36秒 [229]
xさん 長文ありがとうございます
inabaさん資料ありがとうございました
完璧でーーーーーす
ダイアログの中のjpgは小さいのですが、
posレジが800x600なので、1.5倍程度ならokかも
このポスレジ、周りのショップの方々にもちょっと話題になってます
今回のPOP機能も見せたのですが
昨日のような急なドラゴンズセールには本当に便利です
テナントのみなさんレジ見てびっくりしていきます。
このときのドヤ顔がたまりません。
オムロンのレジの関係者とも連絡しあって情報もらったりしていますが
aragoの急なダウンさえ解消できれば
十分に採用、販売OKと言ってもらえましたが
この世界メンテが大変なので無理です。
万が一販売できたら、お二人の特許代金もっていきますね
xさん質問です、
Extern は使用するたびに読み込んだほうがいいのか
最初の立ち上がりで1回読み込んだほうがいいのか
どちらでしょうか
directprnのA5指定の縦と横、どちらも縦になりませんか
すみません、私の勘違いかもしれません
投稿者:x 投稿日:10月03日(日)10時26分32 [228]
210(縦),297(横)ピクセルのdialogの場合
1行目がDEFINE TEXT AT 20.00(aピクセル), FONT ,10.00(bポイント)の場合
10.00(bポイント)は10.00(bポイント)×96÷72=13.33(cピクセル)だから
2行目の位置は
20.00(aピクセル)+13.33(cピクセル文字の高さ)+13.33(cピクセル文字の高さ)×1.5(d文字の高さの1.5倍の行間の場合)=53.33(eピクセル)
となり
2行目はDEFINE TEXT AT 53.33(eピクセル), FONT ,10.00(bポイント)
3行目の位置は
53.33(eピクセル)+13.33(cピクセル文字の高さ)+13.33(cピクセル文字の高さ)*1.5(d文字の高さの1.5倍の行間の場合)=86.66(fピクセル)
となり
3行目はDEFINE TEXT AT 86.66(fピクセル), FONT ,10.00(bポイント)
これを210(縦),297(横)mmのformに換算する場合は
210(縦),297(横)ピクセルのdialogは55.56(縦),78.58(横)mmの大きさのformで
1行目の位置は20.00(aピクセル)が20.00÷96×25.4=5.29mmでそれを297mm/78.58mm倍して20.00(g mm)となり
フォントは10.00(bポイント)を297mm/78.58mm倍して37.80(hポイント)となり
1行目はDEFINE TEXT AT 20.00(g mm), FONT ,37.80(hポイント)
2行目の位置は53.33(eピクセル)が53.33÷96×25.4=14.11mmでそれを297mm/78.58mm倍して53.33(h mm)となり
2行目はDEFINE TEXT AT 53.33(h mm), FONT ,37.80(hポイント)
3行目の位置は86.66(fピクセル)が86.66÷96×25.4=22.93mmでそれを297mm/78.58mm倍して86.66(i mm)となり
3行目はDEFINE TEXT AT 86.66(i mm), FONT ,37.80(hポイント)
となる
上記の場合はdialogのAT(ピクセル)とformのAT(mm)が同じ数値になりますが210(縦),297(横)ピクセルのdialogでは小さ過ぎませんか
フォント 投稿者:kourogi 投稿日:10月03日(日)00時01分23秒 [226]
xさん フオントの大きさについては 完璧です
画面で見たとおりの大きさです!
うれしくなってきました、あと行間です、この要領でやってみます
投稿者:x 投稿日:10月02日(土)23時51分30 [225]
formがmmでpanelとdialogがピクセルでフォントがポイントで25.4mm=96ピクセル=72ポイントで
297x210ピクセルのdialogが78.58×55.56mmの大きさのform(拡大縮小によって画面の大きさは変わりますが)にあたりそこに 50ポイントのフォントを設定なので同じ比率で297x210mmの大きさのformに拡大するなら50ポイントを297mm/78.58mm倍して 188.98ポイントになるかと
フォント 投稿者:kourogi 投稿日:10月02日(土)23時06分05秒 [224]
xさん 大きさ合ってます、そのxさんのさらっと書いた式は
どのような式になるのでしょうか
画面でのフォントpt × 画面jpg横のpix ÷ 78.58/297.0 = 紙面上のフォントpt
でしょうか
投稿者:x 投稿日:10月02日(土)22時00分01 [223]
1インチ=25.4mm=96ピクセル=72ポイントで 297×210ピクセルは78.58×55.56mmの用紙に50ポイント(17.64mm)のフォントだから同じ比率ならば 50×297÷78.58=188.98ポイント(66.67mm)のフォントになるのでしょうかこんなに大きいかな・・・
フォント 投稿者:kourogi 投稿日:10月02日(土)20時37分18秒 [218]
define dialogで 297x210ピクセルに50ptのフォントを設定したとき
297x210mmの紙に同じ比率で印刷するには define form に何ptのフォント指定になるのでしょうか
フォント 投稿者:kourogi 投稿日:10月01日(金)23時39分35秒 [217]
急なアピタユニー指示で
ドラゴンズセールをすることになりましたが
テスト稼動していたPOPシステムが役に立ちました
実際 稼動してみると20%offの%offが
72ptくらいになると 印刷時には上にあがってしまうのです
明日からなので とりあえず印刷しました。
投稿者:x 投稿日:10月01日(金)22時23分33 [216]
この掲示板で管理者としてできることはタイトルを書くこと壁紙記事の削除くらいです全記事クリアなどというボタンもあって間違って押さないように気をつけています
スクロール 投稿者:inaba 投稿日:10月01日(金)20時01分47秒 [215]
xさん、掲示板のデータが長~くなってきました。
ボタンつけて、ページのナビゲーションできるようになりませんでしょうか?
>フォント 投稿者:inaba 投稿日:10月01日(金)19時57分05秒 [214]
kourogiさん
> 1つは、向こうを向いています>
> pxdocは難しそうです
となると、define form しかなさそうですね。
行間の計算式は form でもOKと思います。
おかげさまで再びPXDOCの勉強をさせていただいて、得るものはちゃんとありました。
本当に「情けは人のためならず」です。
手数をかけたのはkourogiさんのためでなく、私自身のためでした。
フォント 投稿者:kourogi 投稿日:10月01日(金)13時08分30秒 [213]
inabaさん モニターは2台なんですが、コンビニにあるレジなので
1つは、向こうを向いています
pxdocは難しそうです
いろいろとお手数お掛けします。
例によって姑息な手段を考えました。
モニターが2台なら、一方にpxdoc、一方にaragoでできるんじゃ?
pxdocのファイル-設定-全般の「印刷後は自動終了」のチェックをはずし、あらかじめpop01.pxdを読み込んでおく。
pop2.prgの最後の run行をはずし、フォントやカラーを変更したら、pxdoc側で
ctrl+rで再読み込み。
どうでしょう? 私のところではテストできません。
フォント 投稿者:kourogi 投稿日:10月01日(金)02時34分21秒 [210]
inabaさん
fs*0.03528+1 のfsはフォントのポイント
出てきたこの結果がmmでしょうか
11ptのフォントは 印刷すると1.39mm ?
それは違いますよね、どこが違うのでしょうか
眠気で回転が鈍ってきました、明日考えます。
フォント 投稿者:kourogi 投稿日:10月01日(金)02時03分43秒 [209]
xさん
w_A4y=297.0
w_A4x=210.0
DEFINE FORM POPSEET FROM 0.00, 0.00 TO w_A4y, w_A4x SIZE w_A4y, w_A4x MM FONT OF sysfont, 9
w_yohaku_y=4.0
w_Yohaku_x=5.0
w_A4y=w_A4y - w_yohaku_y
w_A4x=w_A4x - w_Yohaku_x
w_Zoom1y=(w_A4y-w_yohaku_y)/w_A4y
w_Zoom1x=(w_A4x-w_Yohaku_x)/w_A4x
として余白は用紙幅から除去されるので
各位置情報に w_Zoom1yを掛けて 位置補正はしています
お二人には 大変な手間と時間を取らせて 恐縮です。
投稿者:x 投稿日:09月30日(木)23時31分25 [208]
方眼紙テストしてみました私のプリンタの場合余白設定に関係なく座標0,0が余白内の左上隅となりました
方眼紙の画像の大きさ(354.41×251.8mm)とFROM TOを下記のように一致させると正確な大きさ(座標)に印刷されました
DEFINE IMAGE TFORM OF FORM01 ;
FROM 0.00, 0.00 TO 354.41, 251.8 ;
FILE hougan.BMP
縦が286mmまで横が203mmまで印刷されその外はカットされました
次に画像の大きさを286×203mmにトリミングして
DEFINE IMAGE TFORM OF FORM01 ;
FROM 0.00, 0.00 TO 286.00, 203.00 ;
FILE hougan1.BMP
としましたら画面とプリントが一致しました
投稿者:x 投稿日:09月30日(木)21時31分34 [205]
aragowのFORM2.PRGではFORM.BMPが519×706pixel 175.77×239.1mm 75pixel/inchで貼り付け位置が
DEFINE IMAGE TFORM OF FORM1 ;
FROM 29.90, 20.11 TO 259.03, 184.94 ;
FILE FORM.BMP
となっています
kourogiさんの横298.00 縦210.0のjpgが貼り付けてありやそれの貼り付け位置?とaragowのとどちらが正解なのかわかりませんが下絵の大きさや貼り付け位置は関係しな いのでしょうかプリンタの余白設定などは関係しないのでしょうか方眼紙を下絵にしてテストしてみるとわかるかもしれません
kourogiさん
> pxdocで表示された画面を見ながら
うーん、それができればすばらしいですが・・無理か?
> 行間は自動設定したいのです
pop001.prgは一応は自動設定ですが・・。
--
lm=ltrim(str(fs*0.03528+1,5,2,""))
--
の部分です。
> その換算がうまくいかないです
やはり100%は無理なんじゃ。でも、誤差の範囲で運用できませんかねえ。
フォント 投稿者:kourogi 投稿日:09月30日(木)16時58分35秒 [200]
xさんの言われるとおりの仕様になっています
inabaさん ビデオで撮影してutubeにでも密かにupします
言葉ではうまく説明できませんが
pxdocで表示された画面を見ながら
もう少しフォントのサイズをあげたり
位置を訂正したりできればいいのです
フォントの大きさを上げると行間も増やさないと重なってしまいますよね
コメントは3行分まとめて移動はできますが、行間は自動設定したいのです
xさんの言うように画面用FORMで位置や大きさを決定して
印刷ボタンを押したときに印刷用FORMに換算しながら置き換えて
印刷しますが
その換算がうまくいかないです
今日ビデオ取りして 息子に頼んで確認できる方法を探ります
仕様がちょっと? 投稿者:inaba 投稿日:09月29日(水)19時25分28秒 [198]
> A4横に印刷します
> 文字の位置は上から30.00mm 左から200.00mm
> 1行目と2行目の行間の計算とフォントの印刷時のpt指定です
この行間がどうなればいいのでしょうか?
重ならなければいいのか、最低で何ミリあればいいのか、あるいはフォントサイズの?%なのか・・など。
とりあえず・・ 投稿者:inaba 投稿日:09月29日(水)19時21分39秒 [197]
kourogiさん、
> 印刷ボタンを押してdirectprnで印刷されます
pxdocのボタンですか? それともprgのボタン?
pxdocなら、モニター上で確認し、OKならプリントアウトできるはずですが・・。
投稿者:x 投稿日:09月29日(水)18時43分46 [196]
位置合わせ用の画面用FORMとそれに対応する印刷用FORMの両方作るのはどうでしょう画面用FORMをACTIVATE FORMして画面で位置合わせしそれに対応させた印刷用FORMで印刷する字間を調節して1字ずつ印字するサブルーチンなども必要になるかもしれませんが 赤を選べば濃い赤に変更もできますね
フォントと印刷 投稿者:kourogi 投稿日:09月29日(水)14時08分13秒 [193]
画面には 横298.00 縦210.0のjpgが貼り付けてあり
この上に文字をずらして上から30.00 左から200.00に
1行目"\2900の品"を
2行目に"\1000"を 50ptで配置しました
これでA4横に印刷します
A4横は298.00x210.00mmで、文字の位置は画面と同じなので指数として扱えます
なので 文字の位置は上から30.00mm 左から200.00mmとなりますよね
ここまでは問題ないと思いますが
1行目と2行目の行間の計算とフォントの印刷時のpt指定です
お知恵をお貸し下さい
フォントと印刷 投稿者:kourogi 投稿日:09月29日(水)13時38分58秒 [192]
inabaさん いつも丁寧にありがとうございます
昨日は一日pxdocを試していましたが、
画面を見ながら、文字を移動したり、コメント入れたりします
なので、仕上がりを見ながら配置して完成だと思ったら 印刷ボタンを押して
directprnで印刷されます
pcdocに移った段階でmmの計算がずれていれば、結果 画面と違う位置になってしまいます。
でもinabaさん変換サイト よく見つけて頂きましたね
こっちで、物理的に計算してみます。
モニターと紙 投稿者:inaba 投稿日:09月29日(水)11時16分57秒 [191]
pcdocで試してみましたが、何でやっても難しいものですね。
考えてみたら、モニター(dpi,px)と紙(cm)とフォント(pt)間の単位変換が有理数になる保証はないですよね。
モニター上で様子を見ながら印刷されたときにそのままのイメージにするのは無理かも・・。
もう検索済みかもしれませんが、↓は変換サイトでした。
http://www.trojanbear.net/omake.htm
たぶんpxdocのほうが・・ 投稿者:inaba 投稿日:09月28日(火)22時54分57 [190]
kourogiさん、でっかいフォントで試したことがありませんが、define form よりは、pxdocのほうがイメージどおりのプリントになると思います。
jpgなどを配した共通ページの上に、能書きやらプライスやらを上書きする感じ。
svgファイルは fcreateで書き出し、runで出力すればOKのはずです。
アラゴでお絵かき 投稿者:kourogi 投稿日:09月27日(月)22時29分18秒 [189]
xさんinabaさん いつもお世話になります
xさんの言われるように 下絵は全店統一のため 決まっており
JPGで下絵はできており、そこに3行のコメントと1行のプライスを
配置するだけのソフトです
なのですが
フォントの大きさが変わると行間の計算がうまくできなかったり、
さらに印刷すると 位置の違いが出るため、計算式もわからず
ずれてしまいます
ionabaさんの言われることを 私も感じています
バーコードの幅を設定するときは そのようですね。
それと同じ現象があるのかもしれません。
ショップで見る 商品についた ショーカードPOPです
秋の下絵があって メーカー価格9900円が 現品限り 1990円
という文字だけを配置して 印刷します。
私の経験では、小数点以下どころか整数部分1桁のレベルで動かなかった記憶があります。
小数点以下をPRGに書くか書かないかは、WinかDOSかを判別するためなんじゃないかと思いました。
有効なのは、どの桁のどれくらいの数字なのか・・・不明です。
たとえば、333.3と334.1では表示上は何も変わらないのに、334.2
になると突然やや移動・・なんてことがあったりします(数字は架空です)。
なので、私の場合はクライアントがOKならほとんどPxdocにしてます。
ネットに公開している汎用ソフトではやむなくformにしてますが、やはり、いくらかの誤差が出てしまっています。
投稿者:x 投稿日:09月26日(日)10時23分11 [187]
ARAGOWでの印刷はPOBJECTSのFORMのFORM2.PRGのようにDEFINE IMAGEで罫線や図など(他のソフトで作る)を印刷しそこへ文字だけ印字する(小数点2桁まで位置指定してある)のがいいようにみえます
inabaさん いつもありがとうございます
一般のモニターだと96dpiですね
ぜんぜん わかりませんが
鬼のように 位置のテストを繰り返しながら 数式を探っています
近づいてはくるのですが、完璧じゃないとこが 悔しいです。
Pxdoc 初めて知りました
使い方を探ってみます。
> dpiとpixelの関係
ググッてみるといっぱい出てきますね。
こんなのありました。
--
1024×31ピクセルの画素の画像は、
1024×31mmだと25.4DPIになります。
512×15.5mmだと50.8DPIになります。
361.2×10.9mmだと72DPIになります。
108.3×3.3mmだと240DPIになります。
--
define form をお使いですか?
私はPxdocを使ってます。
どなたかに教えていただいたのですが、なかなか使い勝手はいいと・・。
ただ、ページが変わるたびに印刷ダイアログが出るのは閉口。有料版なら出ないらしいですけど・・。
フォントと印刷 投稿者:kourogi 投稿日:09月22日(水)18時01分18秒 [184]
お世話になりっぱなしのkourogiです
画面に配置したフォントや画像は、
画面上ではxy座標のピクセルを単位としてデータ化しているのですが
印刷するとmmの単位に変換しなくてはいけません
dpiとpixelの関係など、どうもうまく合わず、ずれてしまいます
そこでいきずまっていて、進みません。
画面上のフォントのピクセルと印刷時のmmの関係は
計算できるものなのでしょうか
フォント 投稿者:kourogi 投稿日:09月18日(土)23時36分28秒 [183]
なんだか寝てられなくって仕様とおよそのプログラムができました
inabaさんのカラーピッカー、とても名案です !
xさんのdllでフォントを変えて、16色では足らない時にだけ押す
カラーピッカーボタンをフォントの横に付けました、バッチリです!
もう少し手直しできたら、utubeで動画登録します、
お時間あるときに見て頂いて、アドバイスを伺えたらなと 思います。
フォント 投稿者:kourogi 投稿日:09月18日(土)20時10分46秒 [182]
理解できました !
いやー 今回ちょっと苦労しました
実際には何行かあるので entry101 , entry102,・・・
さらに1枚のA4に4枚印刷するので entry201,entry202・・・
とあると、
行数をw_l としたら
entry&w_l.01 , entry&w_l.02・・・
となりますよね
&だらけで 頭がウニになりました
でも
おかげさまでなんとか出来そうです
もう少ししたら、また報告します。
右目の結膜炎が悪化し、少し寝ます。
ありがとうございました。
できるみたいですね 投稿者:inaba 投稿日:09月18日(土)10時59分44秒 [181]
> w_Col1 という変数に"255,0,0"を入れてあります
>set color color01 to w_Col1 ができればいい
set color color01 to &w_Col1
でやってみたらOKみたいですが・・
@いうまに・・ 投稿者:inaba 投稿日:09月18日(土)10時32分51秒 [179]
> w_Col1 という変数に"255,0,0"を入れてあります
>set color color01 to w_Col1 ができればいい
こんなのも作ってみました。
--
set color e1 to 10,20,200
set color e2 to 200,10,20
set font e1 to of "MS 明朝", 9
set font e2 to of "MS P明朝", 10
set font msg10 to of "MS P明朝", 10
define dialog dia1 at 100.0,150.0 size 385.0,725.0
store space(20) to e1,e2
define entryfield e1 of dia1 at 28.0,82.0 width 300 font e1 color e1
define entryfield e2 of dia1 at 108.0,82.0 width 300 font e2 color e2
&& prologue setfont("e2")
define pushbutton p1 of dia1 at 28.0, 388.0 size 20.0, 50.0 prompt "←変更" font msg10
define pushbutton p2 of dia1 at 108.0, 388.0 size 20.0, 50.0 prompt "←変更" font msg10
define pushbutton dq of dia1 at 208.0, 388.0 size 20.0, 50.0 prompt "終了" font msg10
on selection dialog dia1 do dpro
activate dialog dia1 modal
release dialog dia1
return
procedure dpro
if panel()="P1"
setfont("e1")
setcolor("e1")
elseif panel()="P2"
setfont("e2")
setcolor("e2")
else
deactivate dialog dia1
endif
return
function setfont
parameters para
set font ¶ to ?
return .t.
function setcolor
parameters para
store "0" to rv,gv,bv
cn=pickcol()
if .not.empty(cn)
rv=str(htoi(left(cn,2)))
gv=str(htoi(substr(cn,3,2)))
bv=str(htoi(right(cn,2)))
endif
set color ¶ to &rv,&gv,&bv
define text t01 prompt ¶ of dia1 at 200.0,82.0 font ¶ color ¶
return .t.
function pickcol
hcno=""
decl co[6]
co[1]="00"
co[2]="33"
co[3]="66"
co[4]="99"
co[5]="CC"
co[6]="FF"
define dialog dc1 ;
at 0.0, 0.0 size 500.0, 200.0 title "カラーピッカ-"
on selection dialog dc1 do syori
for p=1 to 6
for q=1 to 6
for r=1 to 6
gcol=co[p]+co[q]+co[r]
rr=htoi(co[p])
rg=htoi(co[q])
rb=htoi(co[r])
set color col&gcol to rr,rg,rb
define pushbutton b&gcol of dc1 at 5.0+r*12+72*(p-1), 10.0+12*(q-1) size 10.0, 10.0 prompt " " color ,col&gcol
next
next
next
define push endbtn of dc1 at 10.0,90.0 size 20.0,40.0 prompt "終了"
activate dialog dc1 modal
release dialog dc1
return hcno
*-------------------
proc syori
if panel()="ENDBTN"
deactivate dialog dc1
else
btn=right(panel(),6)
hcno=btn
define text colname of dc1 at 50.0,90.0 prompt btn
define box box1 of dc1 from 70.0, 90.0 to 155.0, 150.0 opaque ;
color , , col&btn
endif
return
投稿者:x 投稿日:09月17日(金)19時36分52 [178]
*このようにテストしました
set color color01 to 0,0,128
set font font01 to of 'MS 明朝',48 B
set font font02 to of 'MS 明朝',10
EXTERN CSTRING getphonetic(CSTRING) keybd001.dll
EXTERN CSTRING getfont(CLONG,CSTRING,CINT,CSTRING,CSTRING) getfont001.dll
define panel panel01 from 0.0, 0.0 to 400.0, 900.0
store space(80) to entry01,entry02
define entryfield entry01 of panel01 at 20.0,100.0 out3d picture "@K1" valid function01() prologue function02() font font02 color color01
*山田@太郎
define entryfield entry02 of panel01 at 60.0,100.0 out3d font font02 color color01
define text text01 of panel01 at 100.0,100.0 prompt '東京ディズニーランド' font font01 color color01
define text text02 of panel01 at 200.0,100.0 prompt '千葉県浦安市舞浜' font font01 color color01
activate panel panel01 modal
release panel panel01
return
function function01
store filter(entry01,'@',' ') to entry01
store space(200) to buf01
store getphonetic(buf01) to buf02
store filter(buf02,'@',' ') to entry02
return .t.
function function02
store space(100) to getfont01 && バッファ
store getfont(color("color01"),font("font01","F"),font("font01","P"),font("font01","A"),getfont01) to getfont01
if ''<>getfont01
store left(getfont01,11) to getfont02
set color color01 to &getfont02
store right(getfont01,len(getfont01)-11) to getfont03
set font font01 to of &getfont03
endi
return .t.
投稿者:x 投稿日:09月17日(金)18時50分28 [176]
下記に書き込んであるのですがset color color01 to &w_Col1です
ほんと 投稿者:kourogi 投稿日:09月17日(金)18時32分34秒 [175]
255,0,0
自体が変数内に格納され w_Col1 という変数に"255,0,0"を入れてあります
set color color01 to w_Col1 ができればいいのですが エラーですよね
投稿者:x 投稿日:09月17日(金)18時24分29 [174]
set color color01 to 255,0,0
set font font01 to of "DFG極太明朝体",54 B
とやって
store getfont(color("color01"),font("font01","F"),font("font01","P"),font("font01","A"),getfont01) to getfont01
でもいいです
フォント 投稿者:kourogi 投稿日:09月17日(金)18時08分03秒 [173]
そっかー カラーのとこが原因で エラーだったのですね
"255,0,0"の変数を255+0*256+0*256*256 にするのが大変そうです。
投稿者:x 投稿日:09月17日(金)17時17分26 [172]
EXTERN CSTRING getfont(CLONG,CSTRING,CINT,CSTRING,CSTRING) getfont001.dll
ですので
store getfont("255,0,0","DFG極太明朝体",54,"B",getfont01) to getfont01
を
store getfont(255+0*256+0*256*256,"DFG極太明朝体",54,"B",getfont01) to getfont01
です
私のPCでは"DFG極太明朝体"がないです
フォント 投稿者:kourogi 投稿日:09月17日(金)16時29分47秒 [169]
xさん
store getfont(color("color01"),font("font01","F"),font("font01","P"),font("font01","A"),getfont01) to getfont01
のところは
store getfont("255,0,0","DFG極太明朝体",54,"B",getfont01) to getfont01
でよろしいのでしょうか
フォント 投稿者:kourogi 投稿日:09月17日(金)15時45分38秒 [168]
xさん,inabaさん 大変な作業ありがとうございます
inabaさんのは続けてset colorを処理するプログラムですね
これなら いろんな色が作れる反面
フォントで指定した色は無視して、次のカラー設定画面に頼るのですね
xさんのdllは、前回のものに私のプログラムを書き直している途中です。
じっくり検証します。
なにより先に お礼申し上げます。
投稿者:x 投稿日:09月17日(金)11時34分23 [167]
*デフォルトの色も引用するようにかえましたが基本の16色以外は黒になってしまいますここでは仮の色として赤を選べば印刷のときに(プリンタに合わせて)、濃い赤に変更してやろうが最良と思います
EXTERN CSTRING getfont(CLONG,CSTRING,CINT,CSTRING,CSTRING) getfont001.dll
*
store space(100) to getfont01 && バッファ
store getfont(color("color01"),font("font01","F"),font("font01","P"),font("font01","A"),getfont01) to getfont01
if ''<>getfont01
store left(getfont01,11) to getfont02
set color color01 to &getfont02
store right(getfont01,len(getfont01)-11) to getfont03
set font font01 to of &getfont03
endi
> getfont001ではデフォルトの色を引用できないので色を変更しない場合黒になってしまいます←ここもかえますか
変えるとどんな色でもOKになりますか?
投稿者:x 投稿日:09月17日(金)08時05分11 [165]
getfont001ではデフォルトの色を引用できないので色を変更しない場合黒になってしまいます←ここもかえますか
投稿者:x 投稿日:09月17日(金)07時39分55 [164]
*getfont001はコモンダイアログですデフォルトを引用するようにかえました&paraはHTMLの特殊文字のようです
EXTERN CSTRING getfont(CSTRING,CINT,CSTRING,CSTRING) getfont001.dll
*
store space(100) to getfont01 && バッファ
store getfont(font("font01","F"),font("font01","P"),font("font01","A"),getfont01) to getfont01
if ''<>getfont01
store left(getfont01,11) to getfont02
set color color01 to &getfont02
store right(getfont01,len(getfont01)-11) to getfont03
set font font01 to of &getfont03
endi
フォントの色 投稿者:inaba 投稿日:09月17日(金)06時41分52秒 [162]
xさんと違い、いつもながらprgに姑息なことをさせて解決しようとする私です(笑)。
フォントの色をフォントダイアログではなくカラーダイアログで設定したらどうでしょう?
--
set color e1 to 10,20,200
set color e2 to 200,10,20
set font e1 to of "MS 明朝", 9
set font e2 to of "MS P明朝", 10
set font msg10 to of "MS P明朝", 10
define dialog dia1 at 100.0,150.0 size 385.0,725.0
store space(20) to e1,e2
define entryfield e1 of dia1 at 28.0,82.0 width 300 font e1 color e1
define entryfield e2 of dia1 at 108.0,82.0 width 300 font e2 color e2
&& prologue setfont("e2")
&& ↑ならent2にフォーカスが当たるたびに変更
define pushbutton p1 of dia1 at 28.0, 388.0 size 20.0, 50.0 prompt "←変更" font msg10
define pushbutton p2 of dia1 at 108.0, 388.0 size 20.0, 50.0 prompt "←変更" font msg10
define pushbutton dq of dia1 at 208.0, 388.0 size 20.0, 50.0 prompt "終了" font msg10
on selection dialog dia1 do dpro
activate dialog dia1 modal
release dialog dia1
return
procedure dpro
if panel()="P1"
setfont("e1")
setcolor("e1")
elseif panel()="P2"
setfont("e2")
setcolor("e2")
else
deactivate dialog dia1
endif
return
function setfont
parameters para
set font ¶ to ?
return .t.
function setcolor
parameters para
set color ¶ to ?
define text t01 prompt ¶ of dia1 at 200.0,82.0 font ¶ color ¶
return .t.
--
これを適当にアレンジすれば何とかなりませんか?
フォント 投稿者:kourogi 投稿日:09月16日(木)20時51分17秒 [160]
getfont001では、デフォルトが引用できないので
文字の大きさを変更しない場合
10ptになってしまいます
投稿者:x 投稿日:09月16日(木)18時28分01 [159]
印刷物の色合わせはプリンタにもよりますから難しいですね
フォント 投稿者:kourogi 投稿日:09月16日(木)16時41分28秒 [158]
xさん、またもや、さらっと 作って頂いて 本当に短時間ですごいですね
POP作成ソフトはあるんですが、
操作がもっと簡単であること
各支店ごとに不揃いのPOPではなく、統一されていること
が必要なので
バックの絵やロゴは本社から指定されたもので
そこに金額または50%offなんてのを配置するソフトです
だから、文字の大きさと位置を入力した金額に合わせるだけの
操作となります。
getfont001ありがとうございます。
使用する色は16色もありませんが
色をユーザーではなくプログラムで変更できればいいのですが
例えば赤色でも、エンジのような濃い赤が欲しいのです
赤を選べば印刷のときに、濃い赤に変更してやろうと思います
投稿者:x 投稿日:09月16日(木)07時48分04 [157]
*POP作成ソフトがあるようですが・・・色の設定はset color color01 to ? 16色だけなら下記で
EXTERN CSTRING getfont(CSTRING) getfont001.dll
*
store space(100) to getfont01 && バッファ
store getfont(getfont01) to getfont01
if ''<>getfont01
store left(getfont01,11) to getfont02
set color color01 to &getfont02
store right(getfont01,len(getfont01)-11) to getfont03
set font font01 to of &getfont03
endi
フォント 投稿者:kourogi 投稿日:09月16日(木)03時45分02秒 [156]
自己解決できましたが
font()は ダイアログにフォントの色の指定が表示されるのに
フォントのカラーの取得はできないのですね
そこが残念ですね
フォント 投稿者:kourogi 投稿日:09月14日(火)20時22分15秒 [155]
font(1,"F")
を使えば・・・
ちょっと 勉強します。
フォント 投稿者:kourogi 投稿日:09月14日(火)19時51分56秒 [154]
下のプログラムで
入力した文字をタイムリーに変換するのではなく
選択されたフォント名と大きさを表示することは
できないでしょうか
wait e1 はエラーになってしまいます
フォント 投稿者:kourogi 投稿日:09月14日(火)18時59分13秒 [153]
えっ!
こんなことできたんですね
今日まで
全然知りませんでした
いやー、まだまだ沢山あるもんですね、知らない世界。
inabaさんありがとうございます、
inabaさん早起きですね。
フォント 投稿者:inaba 投稿日:09月14日(火)07時48分12秒 [151]
おはようございます。kourogiさんの前便(No.150)はやはりset fontでしたか。
----
set font e1 to of "MS 明朝", 9
set font e2 to of "MS P明朝", 10
set font msg10 to of "MS P明朝", 10
define dialog dia1 at 100.0,150.0 size 385.0,725.0
store space(20) to ent1,ent2
define entryfield ent1 of dia1 at 28.0,82.0 width 300 font e1
define entryfield ent2 of dia1 at 108.0,82.0 width 300 font e2
&& prologue setfont("e2")
&& ↑ならent1にフォーカスが当たるたびに変更
define pushbutton p1 of dia1 at 28.0, 388.0 size 20.0, 50.0 prompt "←変更" font msg10
define pushbutton p2 of dia1 at 108.0, 388.0 size 20.0, 50.0 prompt "←変更" font msg10
define pushbutton dq of dia1 at 208.0, 388.0 size 20.0, 50.0 prompt "終了" font msg10
on selection dialog dia1 do dpro
activate dialog dia1 modal
release dialog dia1
return
**
procedure dpro
if panel()="P1"
setfont("e1")
elseif panel()="P2"
setfont("e2")
else
deactivate dialog dia1
endif
return
**
function setfont
parameters para
set font ¶ to ?
return .t.
----
で選択できますが、フォントが多すぎてかえって面倒じゃ?
あらかじめ5-6個、定義しておいて、どれかを選ぶ方が楽なような・・。
フオント 投稿者:kourogi 投稿日:09月13日(月)23時05分01秒 [150]
inabaさん、ありがとうございます
お店で使うPOPを店サイドでスタッフに作ってもらい印刷するPRGです
POP内のそれぞれの文字は、スタッフが選べれるようにしたいのです。
しかし行ごとのフォントの名前を正確にエントリーフィールドで指定入力するには間違いも多発し、大変なので
アラゴのユーティリティタブの環境設定-フォントから表示される
ダイアログのような選択ができればいいなって
現在試行錯誤中です。
前回のルビ入力は好評で、顧客登録時間が大幅に短縮されました。
ありがとうございます。
フォント 投稿者:inaba 投稿日:09月13日(月)22時46分34秒 [149]
kourogiさん、お仕事は順調なようですね。
> ファイルを得るのにGetfile()を使って
> フォントを得るのに使用すると、フォント名が得られず
フォントファイルをダウンロードしようってことですか?
ちょっと意味がよく分からないのですが、自身のPCのフォント選択なら
set font hoge to ?
ですよねえ?
xさん、inabaさん、またご教授ください
ファイルを得るのにGetfile()を使ってダイアログを出して
選択できるコマンドがありますが
フォントを得るのに使用すると、
フォント名が得られず、フォントとは関係無いファイル名を
得てしまいます。
フォントを選択できるようにしたいのですが、方法をご存知ないでしょうか
ありがとうございます 投稿者:kourogi 投稿日:09月06日(月)13時24分35秒 [147]
inabaさんありがとうございます
またひとつ、便利なDLLが増えました。
ARAGOでは制限された処理の枠から
Externのおかげでこんなに広がるとは思いませんでした
xさんにわざわざ作っていただいた貴重なDLLは
現場で働くエンドユーザーに大変便利に改善することができました。
今日、inabaさんのrubiのプログラムをシステムに組んで
スタッフに顧客管理のバージョンアップと発表をしました。
購入されたお客様の顔写真がcaptureで捕らえられ
顧客の共有とスムーズな顧客入力ができ、現場サイドにとても役立つと
大好評です。
掲示板を通して、お二人に協力頂いたことをお話しました。
お会いしてお礼するのが当然なのですが、xさんのお言葉に
甘えさせていただきます。
本当にありがとうございました。
投稿者:x 投稿日:09月06日(月)12時46分37 [146]
むかしむかし素浪人月影兵庫が礼などいらんよと言っていたので私もそれでとおします
タブキーを押したことにする 投稿者:inaba 投稿日:09月06日(月)06時04分41秒 [145]
kourogiさん、おはようございます。
> Extern CVOID kbd_dn(CINT) arwutil.DLL
> Extern CVOID kbd_up(CINT) arwutil.DLL
> は何でしょうか
下のentryfieldにルビ変換後、上のentryfield(かな入力域)にフォーカスを戻すためのものです。
function rubi中で使っています。
ルビ 投稿者:kourogi 投稿日:09月06日(月)01時42分23秒 [144]
inabaさん 質問よろしいでしょうか
Extern CVOID kbd_dn(CINT) arwutil.DLL
Extern CVOID kbd_up(CINT) arwutil.DLL
は何でしょうか
省略してもルビは出たのですが・・
漢字にふりかな 投稿者:kourogi 投稿日:09月05日(日)22時49分43秒 [143]
氏名の姓と名は分けて入力したほうがよさそうですね
うーん 大幅な改良が必要になってきました。
お礼 投稿者:kourogi 投稿日:09月05日(日)12時31分20秒 [142]
ご親切にありがとうございます
解読する前にまず、長文に至り お調べ頂いた事お礼申し上げます
じっくり解読します、またのちほど。
> buf03はバッファとして使っているだけです
あ、そうでしたね。grtphonetic()もそうでしたし・・。
あとで確認してみます。
投稿者:x 投稿日:09月05日(日)11時50分49 [140]
書き込みありがとうございますhira_to_han(buf02,buf03)とした場合のdllの出力はhira_to_han()に帰ってきますbuf03はバッファとして使っているだけです
hira_to_han(buf02,buf03) && 半角カナ
*rubi=trim(rubi)+buf03 && なぜか最初だけOKだが追加できない?
のところを
store hira_to_han(buf02,buf03) to buf03 && 半角カナとあらためて代入する
*rubi=trim(rubi)+buf03 && なぜか最初だけOKだが追加できない?
とするか
*rubi=trim(rubi)+hira_to_han(buf02,buf03) && なぜか最初だけOKだが追加できない?
とするとokのようです
山本さんのzen2han()は全角ひらがなも半角カタカナになりますね
xさん、kourogiさん、おはようございます。
消してしまったPRGに手を加えたPRGです。
長くなってすみません。なぜかhira_to_han()の連続使用がうまくいかないのですが・・。
--
set language to american
define panel panel1 from 0.0, 0.0 to 400.0, 700.0
EXTERN CSTRING getphonetic(CSTRING) keybd001.dll
EXTERN CSTRING zen_to_han(CSTRING,CSTRING) hantozen001.dll
EXTERN CSTRING hira_to_han(CSTRING,CSTRING) hantozen001.dll
Extern CVOID kbd_dn(CINT) arwutil.DLL
Extern CVOID kbd_up(CINT) arwutil.DLL
define text title of panel1 at 10.0,10.0 ;
prompt "漢字変換後にenterキーを押すとルビが自動入力される\nたなか-変換-enter-ごとう-変換-enter と入力+変換を繰り返す。"
define text t_kanji of panel1 at 50.0,10.0 prompt "漢字変換+ENTER"
define text t_rubi of panel1 at 80.0,10.0 prompt "変換前のかな"
store space(16) to kanji,rubi
define entryfield kanji of panel1 at 48.0,120.0 out3d picture "@K1" valid rubi()
define entryfield rubi of panel1 at 78.0,120.0 out3d
activate panel panel1 modal
release panel panel1
return
**
function rubi
store space(200) to buf01,buf03 && バッファを確保
store getphonetic(buf01) to buf02 && 全角かな
hira_to_han(buf02,buf03) && 半角カナ
*rubi=trim(rubi)+buf03 && なぜか最初だけOKだが追加できない?
rubi=trim(rubi)+zen2han(buf02) && これだとうまくいく
kbd_dn(9) && Tab Key focus=ent02
kbd_up(9) && focus=ent01
return .t.
**
function zen2han && 確か山本さんにいただいたはず
parameter zenkaku
private hankaku, c, p, f, table1z, table1h, table2z, table2h, table3z, table3h
table1z = "1234567890-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&' ‘,.:;=~^|+-*/?_¥<>(){}[]¥@アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲ ンァィゥェォッャュョーあいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんぁぃぅぇぉっゃゅょー"
table1h = "1234567890- ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&'`,.:;=~^|+-*/?_\& lt;>(){}[]\@アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ-ア イウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ-"
table2z = "ガギグゲゴザジズゼゾダヂヅデドバビブベボがぎぐげござじずぜぞだぢづでどばびぶべぼ"
table2h = "カキクケコサシスセソタチツテトハヒフヘホカキクケコサシスセソタチツテトハヒフヘホ"
table3z = "パピプペポぱぴぷぺぽ"
table3h = "ハヒフヘホハヒフヘホ"
set language to japanese
hankaku = ""
c = ""
for i=1 to len(zenkaku)
c = substr(zenkaku, i, 1)
if asc(c) > 256
p = at(c, table1z)
if p > 0
hankaku = hankaku + substr(table1h, p, 1)
loop
endif
p = at(c, table2z)
if p > 0
hankaku = hankaku + substr(table2h, p, 1) + "゙"
loop
endif
p = at(c, table3z)
if p > 0
hankaku = hankaku + substr(table3h, p, 1) + "゚"
loop
endif
endif
hankaku = hankaku + c
next
set language to american
return hankaku
投稿者:x 投稿日:09月05日(日)08時55分27 [135]
*漢字に変換したタイミングでのふりがな取得
EXTERN CSTRING getphonetic(CSTRING) keybd001.dll
define panel panel01 from 0.0, 0.0 to 400.0, 800.0
store space(20) to entry01,entry02
define entryfield entry01 of panel01 at 80.0,100.0 out3d picture "@K1" valid function01()
*山田@太郎
define entryfield entry02 of panel01 at 160.0,100.0 out3d
activate panel panel01 modal
release panel panel01
return
function function01
store filter(entry01,'@',' ') to entry01
store space(200) to buf01
store getphonetic(buf01) to buf02
store filter(buf02,'@',' ') to entry02
return .t.
投稿者:x 投稿日:09月04日(土)19時26分31 [134]
inabaさんがgetphonetic()が変換前の「かな」、 今回のが「漢字の読みの第1候補」と理解すればよろしいでしょうか?とその通りだと思います前にinabaさんがgetphonetic()のうまい使用 例を書き込んでくれたのですが削除されたようでまた書き込んでくれませんか
ありがとうございます 投稿者:kourogi 投稿日:09月04日(土)19時09分31秒 [133]
C910というとロジクールの新発売した両側にマイクあるやつでしょうか
xさんいいの持ってますね、
でも、captur001.dllが作動していても、アラゴのプログラムは進んでいるのですよね。
それなら問題ないのです。
capture.exeのときは黒い作業用のウインドウが出ていましたが
dllにして頂いてから何も出ずに、
撮影してしまうので大変便利です。
hantozen001の件、またまたありがとうございます
顧客名を漢字入力して、そのカナに利用するのですが
前回もxさんが言われたように、読み方が違う場合もあるので
違っていた場合は修正入力することになりそうです。
この件はアラゴの掲示板にも話題にはなっていましたが
解決されたのかはわかりません。
それと、xさん 何かお礼させて下さい。
ご連絡とれる方法があればいいのですが・・・。
投稿者:x 投稿日:09月04日(土)18時01分17 [132]
kourogiさんC910ですとタイムラグ300ミリ秒で普通に写りますhantozen001.dllに全角ひらがなを半角カタカナに変換するhira_to_han()を入れました
xさん
快適です、
感動です、
何事も無かったかのようにキャプる姿は
ステルス機能のようで
とっても気に入りました
しばらく撮影タイミングの実践テストを繰り返して
組み入れます。
本当にありがとうございます。
投稿者:x 投稿日:09月01日(水)22時57分59 [126]
*capture001.dllをアップロードしましたcapture("デバイス名","出力ファイル名",撮影のタイムラグミリ秒)
EXTERN CVOID capture(CSTRING,CSTRING,CINT) capture001.dll
capture('Chicony USB 2.0 Camera','sample.bmp',700)
すみません xさん
画面を覆ってしまう枠というのはCAPTURE.dll で画面に出るウインドゥのことです。hantozen001.dllではありません。
明るさを確保するためにタイムラグを2000にするのですが
時間が長い分だけ画面に表示されているウインドゥで画面を覆ってしまうので
気になると説明したかったのです、どうもすみません。
CMOSのカメラからスイッチオンで起動の早いカメラにすれば解決するかもしれません。
CMOSのモジュールでは電源投入から画像安定するまでタイムラグが大きいのでしょう。USBWEBカメラのほとんどはCMOSなのでなかなか見つかりません。
投稿者:x 投稿日:09月01日(水)07時47分09 [123]
同じ漢字でも人によって読み方が違いますので個別の確認が必要です ひらがな→半角カタカナは作ればですが・・・とりあえずhira_to_kata()とzen_to_han()で画面を覆ってしまう枠というのはコマン ドプロンプトのことですかデフォルトのデバイスというのはないようです
私のCMOS WEBカメラではタイムラグ700が限界で
映ってはいるのですが、とても暗いです
2000にする明るくなりますが、画面に表示される枠が気になります。
レジ会計時に自動記録したいので、ポスレジ画面を覆ってしまう枠表示の時間が気になります。
また前回同様 デバイス""ならデフォルトのデバイスを利用することになれば
なお使いやすいと思うのですが
素人の考えることなので、それよりも図々しく意見など恐縮です。
映りました !
すごいです、
ありがとうございます。本当に毎回
感謝の言葉しかありませんが
xさんのおかげで 思い通りのシステムに近づいていきます
今 顧客管理部分の修正を手がけています
kanji_to_hanで自動半角カナを氏名部分につけたいのですが
半角になりません。kanji_to_kanaと同じ結果になってしまうのですが
方法はありませんでしょうか。
ふりかなを2度打ちしなくて済むので大変ありがたいのですが
全角ひらがなになってしまいます
投稿者:x 投稿日:08月31日(火)23時56分36 [119]
capture.exe "Sony Visual Communication Camera VGP-VCC1" sample.bmp 700 引数は デバイス名 出力ファイル名撮影のタイムラグ(ミリ秒)動作確認用でまだエラー処理メモリーの解放処理やっていません
カメラ本体を見ていると、撮影時のLEDが一瞬点灯します。
xさんありがとうございます
もしかしたら、これって作って頂いたのでしょうか
この短時間で?
カメラはスカイプでは写っているのですが
ファイルを見ると真っ暗です。
一瞬ビデオ枠が出てきて真っ黒のまま閉じます。
私のカメラ設定が悪いのでしょうか
カメラの名前はセットしなくてもいいのですか ?
投稿者:x 投稿日:08月30日(月)23時29分44 [115]
http://www2.odn.ne.jp/merrybelle/capture.exeをダウンロードしてコマンドラインでcapture.exe sample.bmpとやってsample.bmpできますか
キャプチャー 投稿者:kourogi 投稿日:08月29日(日)20時45分40秒 [114]
ご存知でしたら、教えてください、
ARAGO のコマンドラインから
WEBカメラの撮影ができるソフト系
ご存知ないでしょうか、
キャプチャーのデバイスとファイル名の指定で
静止画でいいから撮影できるものは無いものでしょうか。
run capt.exe "webcam1300" "gazou.jpg"
のような感じで専用ダイアログが出ずに
画像がファイルになればいいのですが。
VECTORで探しましたが、うまく見つかりません。
投稿者:x 投稿日:08月29日(日)11時19分22 [113]
EXTERNでの呼び出しとdllとを正確に合わせなければ動きません
ドットネットDLL 投稿者:inaba 投稿日:08月28日(土)19時30分57秒 [112]
xさん、本家サザンの掲示板で .NET 用のDLLがARAGOで使えるかどうか話題になってますが、どんなもんでしょうか?
こんな使い方ができるとは知りませんでした
この板に来てから毎日新発見の連続です
4時までついつい・・の毎日です
inabaさんありがとうございます。
> SET LANGUAGE TO JAPANESEですと文字列の終わりのNULLを認識しないで通り越してしまうことがありました
これは考えてもみませんでしたが、偶然にも私も普段はAMERICANでプログラミングしてました。
kourogiさんのおっしゃる「半角+全角の日本語メッセージの長さを得る」時だけjapaneseにしていましたが、そこでダウンしたと思われる経験は・・ないような・・。
Dbgviewの使い方の正しい使い方は知りませんが、以下のようにすると使えることは使えます。
hoge.prg
--
EXTERN CVOID OutputDebugStringA(CSTRING) kernel32.dll
とし、ブレイクポイントで
* Dbgview.exeの窓に表示
OutputDebugStringA("文字列")
--
最初は、OutputDebugStringで試しましたがうまくいかず、WZ(テキストエディタです)で覗いてみたらOutputDebugStringAを発見し、それでやってみたら結果オーライでした。
xさんなら理由がきっとお分かりでしょうね・・え。私は???です。
inabaさん さっそくdownloadしてきました、
使い方を勉強してみます、
xさん、SET LANGUAGE TO JAPANESE なら
ふんだんに使っています。
半角+全角の日本語メッセージの長さを得るのに欠かせないです
代用があればいいのですが・・・
投稿者:x 投稿日:08月26日(木)14時00分01 [107]
うろ覚えなのですがSET LANGUAGE TO JAPANESEですと文字列の終わりのNULLを認識しないで通り越してしまうことがありました随所で落ちる原因になると思いますのでSET LANGUAGE TO AMERICANでプログラミングした方が安全かもしれません
本業? 投稿者:inaba 投稿日:08月26日(木)05時56分51秒 [106]
私、アマチュアに毛が生えた程度で、まったくたいしたことありません。
カバレッジはaragoでset coverage on/offのことです。
Dbgviewはけっこう有名なソフト・・かな? すぐ検索できると思います。
prgのブレイクポイントにしかけた出力文字がDbgviewの窓に出力されます。
aragoのwaitだと落ちちゃうとそれっきりですが、Dbgviewは落ちないので・・といった思いつき程度の書き込みです。
すみません。
#define pie 3.14 は大変わかりやすい例です、ありがとうございます。
努力すれば治療済みにできるのですね、大したものです、
inabaさんは本業ですか
私にはデバッグビューワとかカバレッジの使い方も良く知らないのです。
メモリの件は、再現性がないので、タイミングがつかめず
実務でも11時間使って、1~2度ほど落ちます、
レジの途中で落ちるのが最悪です。
kourogiさん、#defineはたぶん定数の定義に使っている人が多いと思います。
#define pie 3.14 のように・・。メインプログラムのヘッダに書けば、publicだと思います。
aragoが落ちる件、メモリーの問題ではなさそう・・ということですか。
私のところでは落ちるPRGはすべて治療済みにしてしまいましたので、テストができません。
デバッグビューワとかカバレッジとか何かできませんかねえ・・。
inabaさんありがとうございます
ヘルプを見ても いまいちわかりづらい部分でした
コンパイルされたPRGには使えそうですが、
そうでなければPRIVATE宣言して使うメモリと同じであると理解しました。
ARAGOのフリーズですが、特にメモリが膨らんでくる様子はなく
ARAGOが突然落ちると、ProcessEからも消えてしまうので
原因もよくわかりません
前々便[100]にタイプミスがありました。
#include tst.h → #include hoge.h
Winの構造的な部分を見るわけですから、xさんに見ていただくと詳しく分かるんじゃないかと思いますが・・。
ともあれ、物理メモリはWorkingSetでPrivateByteは仮想メモリじゃないかと・・。
なお、メニューなどのリソースが日本語化されたパッチがありますよ。
私はこんなふうに使っています。
hoge.hというテキストファイルを2つ用意し、自宅=自社では(1)を発注元では(2)を使います。
*hoge.h--開発時用(1)
#define dsv "c:\tmp\" &&仮想サーバ
#define dcl "c:\aragow67\bin\develop\tmate\" &&クライアントのフォルダ
*hoge.h--運用時用(2)
#define dsv "\\server\serv_c\tmate\" &&サーバのフォルダ
#define dcl "c:\tmate\" &&クライアントのフォルダ
メインプログラムのヘッダに
#include tst.h
と記述しておくと、コードを変更することなく、すべてのprgで dsv dcl が読み替えられます。
●この話題は xさんも書いていらっしゃいましたが、サザンの掲示板の方がいいと思いますよ。
物理メモリの使用率でメモリの使用率というのは PrivateByte ?
それともWorkingSet?
inabaさんありがとうございます、今前者をダウンロードして
サブモニターを付けて、準備したところです。
メモリの宣言ですが
inabaさん#define って使ってますか?
これって w_No=1 と #define w_No 1 は違いがあるのですか
ARAGO 投稿者:inaba 投稿日:08月23日(月)11時20分31秒 [97]
私もaragowのダウンにけっこう悩まされています。
kourogiさんのテストの結果が楽しみです。
ご存知かもしれませんが、Winのタスクマネージャより高機能なProcessExploerとかProcessMonitorというソフトがあります。
xさん名案です !
テストしてみます。
メモリの宣言をきちんとしておくことは
重要かもしれません。
投稿者:x 投稿日:08月22日(日)20時47分51 [95]
aragowのアプリケーションの個々のプロシージャをテストプログラムで動かし続けてみてタスクマネージャのパフォーマンス物理メモリの使用率でメモリの使用率が徐々に増えるのを確認するなどしてどのプロシージャが問題なのかを絞り込めれば対策があるかもしれません
参考になります、ありがとうございます。
sleep 0.5 は 私も自分で発見して 随所に付けています。
ただこれらも、落ちる場所が特定できる場合です。
でも実際に業務で長く使ってると、どこで落ちるかは
まちまちなんです。
何でもないメニュー画面で落ちることもあり、
多くは次のプログラムに移るときに、3秒ほど無言が続いて落ちます。
落ちたときのメッセージはWINのOSのメッセージで
ご迷惑・・・ 送信しますか・・・ ってやつです。
でも毎回同じ場所ではないので、
それで思うにアラゴのメモリ管理的な・・・
と判断したわけです。
アラゴプログラム実行中に
いったんメモリをセーブして、クリーンにする処理をして
アラゴを再起動してメモリを戻す的なことが
素早くできたら、直らないかな・・と素人判断で思うわけです。
だいたい 業務ソフトをアラゴで というのが失敗なんですが
クイックシルバーのDOS時代はとても安定したすばらしい開発言語でしたから
今の年になって新言語は学べません。
投稿者:x 投稿日:08月22日(日)19時45分25 [93]
以前の経験でprg間やPROCEDURE間でDEFINE BROWSEなどをするとレコード番号が引き継がれない場合がありましたそれでDEFINE BROWSEの前にgo RECNO()を入れると落ちなくなったことがありました
Mishinaさんがaragow 6.5を愛用していると書いてましたまた下記の書き込みありましたMishinaさん勝手にコピペお許しください
1 DEFINE BROWSE は大幅に変更があったので注意 IN 条件 レコード番号 FREEZE WHEN
対策 IN を外す SELE FILENAME 条件は必ず外す SET FILT 又は INDEXに条件を付ける
レコード番号は働かないので SEEK後再定義する FREEZE は使わない
2 SET RELATION した場合の BROWSEでの編集
対策 SET RELATION 内では直接編集を行わない(修正ルーチンを作成する)
3 メモリ変数は最初に宣言すること
対策 変数管理を最初に行う
4 データ数が30000件を超える場合にDEFINE BROWSE すると随分遅くなりました。砂時計が出まくる感じ
対策が取れないので4.5で動かしています
私が感じている所見を掲示しますので参考にしてください。
プログラムの修正箇所
dfine browse の in オプションを外すこと
dfine browse の 条件を使わないこと set filt to .. や index で条件を付けること
メモリ変数は必ずヘッダー部分で宣言すること
set exac は 標準で ON にしておく方が安全
パネルペインタで画面の位置取り以外は、約束に従って、手動で書いた方が良い
リレーションしてあるbrowseでの、ダイレクト編集は表示がおかしくなるので、注意
DEFINE BROWSE で直接データを編集するのは危険、特に SET RELA の場合は要注意
私の使い方はBROWSEで拾って別画面で編集してREPL
SET RELA の場合も同じ方法です。
>ARAGOには文法上エラーにならないエラー(バグ)が時々あって、
>それを自分で抜け道を作って避けて進まないといけないのです。
私の経験
1 落ちる場所を見つけて sleep 0.5 を入れると落ちなくなるケース、特にbrowse
2 browseの PICT "999,999,999" を使わない
3 VALID で飛ぶ FUNCTION の中に WAIT命令は絶対に使わない
4 OSの違いで落ちたりする場合 WINXP
細かく退治して安定してくると ARAGO6.2 より ARAGO4.5 が調子良かったりする
「落ちる場所を見つけて」と書きましたが、じゃあどうやって見つけるか
1 落ちる場所の見当を付けて wait "1" wait "2" 等と記述しておく(なるべく細かく)
2 プログラムを稼動して、どのwaitとどのwaitの場所で止まるかを捜す
3 必ず同じ場所なら、その場所を別の方法に変えたりする
4 メモリ変数が壊れる(どこで壊れるか徹底的に探す)変数名を変えると直る場合有り
5 出来るならbrowseでの入力はやめて、余分なことはさせない
あくまでも、私見ですが
1 パソコンのメモリを512以上にするとか
2 関数の中には WAIT を置かないこと
3 メッセージBOXをするとSELECTがかわることが有るから、使用しないこと
4 BROWSE の中で :R を使わないこと。
5 set rela では brows で修正を行わないこと
6 SEET と ページを使ったBROWS はしない事
7 browse から修正したい場合は、別画面を用意し、そこで修正すること
8 とまると思われる場所に SLEEP で時間稼ぐととまる場合がある
9 BROWSE の 上にBROWSEを開く場合は下のBROWSEをRELEし戻る時に再定義すること
10 DIALOG や PANEL は常に開放すること
11 valid から呼ばれた func 内から do ?????.prg は行わないこと
要約すると browse valid に関係する場合が多いです。これらを対策すると、自分ではおおかた旨くいっています。
客先で起きている現象が開発環境で起きないケースは誰でも経験していると思います。
客先のパソコンの中に A????.tmp が5個以上有ったら危険信号です。
それも100%再現出来ないので、上記を参考に防いでおります。
エラーは一度もありません、昨日から2店舗だけでバージョンアップしました
xさんのDLLはかなりの偉業です !
プリンターのダイアログをパートさんに説明する必要がなくなりました
レシートもBASICに切り替わらないので素早くなり、
お客さんを待たせません。
スタッフはメカに弱い女性なので、簡単になったと大好評です。
あとは、突然強制終了してしまうアラゴが課題です。
時間があいたときに、メモリを整理するというのか
システム的な問題を、解決できないにしても
補助するようなDLLやバックで動作するものはご存じないでしょうか。
投稿者:x 投稿日:08月22日(日)09時33分06 [91]
directprn('',9,1,0)
directprn('',9,1,0)
PRINT FORM form01
のようにPRINT FORM form01の前にdirectprn()を2回以上入れるとエラーとなって強制終了してしまいますこっそりなおしましたがkourogiさん大丈夫かな
xさん、大変面倒なことをお願いしてしまったようで恐縮です
ありがたく使用させて頂きます。
いつも頂く一方で、お返しできるものが何も無いのが残念です。
PCハードの方なら少々、あとは熱帯魚と映画くらいしか得意分野がなくて
力になれることがあれば言ってください。
投稿者:x 投稿日:08月18日(水)07時58分20 [89]
プリンタの用紙サイズ設定のところで長さ無限の用紙サイズを選択できるのですかdirectprn('Canon LBP5400 LIPSLX',0,1,0)のようにPAPERSIZE,ORIENTATION,DUPLEXに0を入れるとそこがデフォルトに設定されるようにこっそりなおしました
今、新しいdirectprn()に変更しました、
print002.dllはダイアログが一瞬表示されましたが
directprn()はなくなりました、速いです !
用紙サイズですが、長さ無限というコードもあるのでしょうか
乱数とくじ 投稿者:kourogi 投稿日:08月18日(水)00時17分14秒 [86]
xさんの言われるとおり、損のないようになってます
つまり、利益がない買い上げでは、当たりはでません。
でも、同じTシャツでも、900円で仕入れたものと600円て仕入れたものとあります。
お客さんはどちらを買うか・・・
前者のTシャツは出ませんが、後者なら出ます。
ある意味で、お客が商品を選ぶ確立が発生していて、スタッフも気づきません。だから、乱数は使っていません。
力になれない板汚しでした。
投稿者:x 投稿日:08月17日(火)23時27分53 [85]
自然な乱数ExclusiveOrshift演算線形合同法って数学ですか・・・私には無理なようですくじと言えばkourogiさんの店でもあたりクジがあるのかなあたりはオーナーの独断で決めるのもありではないかと思います
xさん
今 気づきました
プリンター名 とか いつのまに・・・・
ほんとにほんとに 感謝です !
投稿者:x 投稿日:08月17日(火)11時14分04 [82]
inabaさんがPRGでやられていることをdllに書き換えることくらいならなんとかできるかもしれませんが乱数って・・・絶句別次元のことで全くわかりません
ご冗談を 投稿者:inaba 投稿日:08月16日(月)20時40分44秒 [81]
>私のdllはたいしたものではありません
xさんの姿勢は一貫していらっしゃいますね。
>ソースファイルを付けているのは自信がないからでご自分でなおしてくださいと願っています
うーん・・(絶句)、xさんの感覚のレベルと私のような駆け出しの感覚のレベルの違いを感じますね。
自分でなおせるくらいの力があれば、最初から自分で作る・・に決まっていて、できないから探すわけで・・。
何はともあれ結果オーライで、使わせていただけるものはありがたく頂きます。
でまた、新たな課題・・。
課題は、擬似乱数の「自然な」生成です。
たとえば30個の乱数を生成して、できる限り再生不可能な状況を作れるか?
これは私自身はPRGレベルでそれなりの解決をしていますが、擬似かどうか検証のしようがなく、どうしたものかと・・。
DLLレベルでやれば複雑な計算も速く、人間には「擬似乱数」ではなく本物の「乱数」と映るかも・・?
もし、遊んでみようかなと思われたら、お願いしたく・・。
投稿者:x 投稿日:08月16日(月)07時59分20 [80]
はじめから私のdllはたいしたものではありませんmail001.dllも(他のものも)何度かこっそりなおしましたソースファイルを付けているのは自信がないからですご自分でなおしてくださいと願っています
xさん、kourogiさん、おはようございます。
xさんも人が悪い(笑)。SMTP認証なしのsendmail2.prgをこっそり仕込んでおくなんて・・。
新しい認証なしPRGのPOPサーバにアクセスする部分はおまけですか?
以前のPRGでも認証部分をコメントオフしたらエラーはなくなりました。
つまりメールアドレスとポート番号とSMTPサーバ名さえわかれば送れてしまった!
認証なしというのは怖いですね。
xさん、inabaさん お世話になっています。
まさに、ポート問題も悩みの種でした。
ポート指定ができないので、自動メール送信ができませんでした、
コレできるのでしょうか、すばらしいです。
前回のプリンター問題は解決して、レシートにバーコードやら
あたりクジやら、いろいろ付けれるようになり
システム変更中です、お二人のお陰です。
前便に変換ミス。
メールは遅れます→送れます
おはようございます。
次々と出てきますね。仕様変更版directprn()はまだ試していません。
sendmailはaragoにもありますが、ポート番号の指定とSMTP認証ができないのが玉に傷。
mail001.dllではそれができるということですね。
逆に、SMTP認証なしの場合はどうなりますか?
やってみましたら、メールは遅れますが、以下のエラーがでます。
535 5.7.0 Error: authentication failed: authentication failure
xさん、標記、とてもおもしろいですね。
server.prg のところを別のprgにすると、aragoiが実行してくれて、その結果を返してくれるので、工夫次第でどんなことができるのやら!!
ありがとうございます、調べてみます。
お二人には 本当に心から感謝申し上げます。
事後報告ですが、xpにC++2010の無料版をインストールしたところ
快適に動作しました
レシート発行がWINDOWSの印刷が利用でき、
いろんなアイデアを実行できそうです。
投稿者:x 投稿日:08月02日(月)16時20分02 [73]
aragowのメモリーの解放などに問題があったりバッファオー バーランが起きるのかもしれませんプロのかたがアクセスしている本家のwww.soupacific.comの掲示板の方が情報を得られやすいと思います この掲示板は今のところkourogiさんとinabaさんくらいしかアクセスがありませんさらに私は何年も前からaragowを使っていません Microsoftの製品のほうがユーザーが多くバグもすぐに対応されて何でもできて安定もしていますので
ARAGOで作成したアプリが巨大化してきました、
同じプログラムでも、何回か繰り返すと
突然システム的なOS側のエラーとなって強制終了し
画面から消えてしまいます
こういった現象を安定させるのに、
みなさんは工夫されていますか ?
判明しました
.NET Framework 4
SQL Server
他のソフトの影響で上記がインストールされていれば
xpでも作動を確認しました
この度は大変ありがとうございました
DOSだった頃はSEをしていた経歴もあるのですが
windowsが発表されたころに衣料のショップを開業しまして
あとは独学なので知識足らずです
できましたら、今後も是非お力添え頂けますよう
お付き合いお願い申し上げます。
> 私のXPは普通の何も入ってないXP(home)se3
すみません、sp3です。
私のXPは普通の何も入ってないXP(home)se3ですが動きました。
Win98SE2+arago4.5ではkourogiさんと同じエラーでした。
投稿者:x 投稿日:08月02日(月)07時30分07 [68]
print001.dllとprint002.dllは PrintDlgなどの関数を使っていますがこれなら1990年代のWindows 3.xでも動くと思います私のWindows XPではdirectprn.dllも動きますのでWIN32 Platform SDKが入っているかいないかの違いかもしれませんそれと私のdllは素人丸出しのものですのでメモリーの解放などバグがあるかもしれません
win7_64もエラー出ません !
しかも組み込んでrunさせたところバッチリ動作しました
これは便利です。
xpだと何かが足らないということでしょうか
昔クイックシルバーだった頃、
ツールの恩返しというアドインソフトで感動しましたが
それ以来の感動ものです。
VISTAのマシンだと、エラー出ません !
もう少し検証します。
しかしながら、print001が動作するというのは
その原因に関係していないのでしょうか
お二人での助言、感謝いたします。
dllは同じフォルダです
私はC言語には縁がないので
そのたぐいのソフトは一切入っていません
Xさんの言われていることをググってみます。
投稿者:x 投稿日:08月01日(日)21時46分41 [62]
このdllではMicrosoft SDKの関数などを並べていますのでWindowsXP SP2に対応したWIN32 Platform SDKのダウンロードとか無料のMicrosoft Visual C++ 2008 Express Editionとかが入っていないと動かないのかもしれませんなんか面倒ですね
kourogiさん、xさんが書かれているとおり、問題のaragoエラーはパスが通っていないエラーと思います。
4回出たということは、私のソースではdirectprn001.dllを最初に4回呼んでいますのでやはりdirectprn001.dllが認識できなかったということだと思います。ちなみに、まったく存在しないhoge.dllをprgのソースに書いても同じエラーが出ます。
prgと同じフォルダにdllを入れるとどうでしょう?
自分も疑って、セキュリティソフトをダウンしてから、再度ダウンロードしました
8,704 バイトです
arago6.5を用意しましたが 同様です。すみません。
投稿者:x 投稿日:08月01日(日)20時44分57 [59]
エラーが4回というのは1~4行ですねdirectprn001.dllはサイズ8.50KBですが0バイトになっていませんか?arago6.2は手元になくてテストできません
inabaさん大変ありがとうございます
もちろんコピペして実行しているのですが
プログラムエラーではなく、一回り枠の小さいaragoエラーと出て
アラゴはこの機能をサポートしていませんと表示されます
(キャンセル、続行ボタンの無いエラーウインドゥです)
ちなみに下のサンプルをそのままコピペして実行すると
「aragoエラー」が4回表示され
当然パネル未設定のk1が無いという 「プログラムエラー」がでます。
当方はARAGOは20年付き合ってますがEXTERNは初めてです、
何か、初歩的な勘違いがあるのだと思います。
パソコンを変えたり、新規のフォルダーにaragoをインストールしてみます。
ひつこく迷惑かけているのが 大変申し訳ないです。
xさん、ありがとうございます。
kourogiさん、私のところではうまく動いてくれましたよ。
以下
--
EXTERN CVOID directprn(CINT,CINT,CINT) directprn001.dll
EXTERN CINT hookstartdoc01(CVOID) directprn001.dll
EXTERN CLONG gethookdc01(CVOID) directprn001.dll
EXTERN CINT startdoc01(CLONG,CSTRING) directprn001.dll
EXTERN CINT AbortDoc(CLONG) gdi32.DLL
EXTERN CINT StartPage(CLONG) gdi32.DLL
EXTERN CINT EndPage(CLONG) gdi32.DLL
EXTERN CINT EndDoc(CLONG) gdi32.DLL
directprn(9,2,1)
hookstartdoc01()
print form k1
stor gethookdc01() to hDC01
AbortDoc(hDC01)
startdoc01(hDC01,'ドキュメント01')
print form
print form end
EndDoc(hDC01)
--
投稿者:x 投稿日:08月01日(日)18時59分01 [56]
確かにOOPS:何か書き忘れがあります:)と出ましたCINTではCVOIDとdllと正確に合わせなければ動きません合っていないのに動いたら困りますコピペするといいと思います
アラゴのプロンプトに続けて
ダイレクトに入力しても
EXTERN CINT returndefault01(CVOID) print001.dll
はokでした
EXTERN CVOID directprn(CINT,CINT,CINT) directprn001.dll
は同じエラーです、何か設定がわるいのでしょうが、思いつくことがあれば助言下さい。
私にはよくわかりませんが print001のように
EXTERN CINT directprn(CVOID,CVOID,CVOID) directprn001.dllとすると
何か書き忘れがあります ) と出ます
スペル違いはないです、ファイルも同じディレクトリ内を確認しました。
投稿者:x 投稿日:08月01日(日)15時27分47 [53]
ロードできないのはEXTERN CVOID directprn(CINT,CINT,CINT) directprn001.dllのスペル間違いがないかやdllのおき場所(ディレクトリ)がokかなどをチェックしてみてくださいセキュリティはオンのままが安心ですこのdllでは複数のプリンタを使い分けることができないです
印刷ダイアログ非表示 投稿者:kourogi 投稿日:08月01日(日)14時47分11秒 [52]
お返事頂けまして、大変ありがとうございます。
またわざわざお手数おかけしましたこと感謝申し上げます。
実行しましたところ、ロードできませんアラゴはこの機能をサポートしていませんといったエラーが出ます。
実はhatozenのdllも同様でした。print001,002は読み込みができ問題ありませんでした。セキュリティはオフにして、arago6.2、xpにて使用してます。
POSレジを作成しレシートプリンターを使用しています、また資料はインクジェットプリンターを分けて使っています
print002.dllは大変感激しました、directprn001.dllが利用できれば
印刷のときだけBASICに頼らずスピーディにレシートが出るのですが
なんとかなればと願っております。
投稿者:x 投稿日:08月01日(日)13時52分48 [51]
aragowの印刷ダイアログを非表示にする directprn001.dllをアップロードしました・・・ダウンロードしようとしたらnortonがこのインサイトネットワーク驚異を削除しました このファイルは信頼できないので安全ではないということを示す多くの兆候がありますとなってnortonを停止しないとダウンロードできませんでしたうまく動くかどうかテストできる環境がないのでわかりません
印刷ダイアログ非表示 投稿者:Kourogi 投稿日:07月30日(金)18時57分43 [50]
偶然ネット検索していて
印刷ダイアログを非表示にできるというここのDLLを拝見しました、
まさに10年以上悩んでたことが解決できそうで
びっくりしてます。
ダイアログは非表示でいいのですが
用紙指定や向きの設定はprg内でできないでしょうか
大変あつかましいのですが
使い方の詳細を頂ければ幸いです。
投稿者:x 投稿日:07月26日(月)18時34分42 [49]
*いっぱい作りました
EXTERN CSTRING han_to_zen(CSTRING,CSTRING) hantozen001.dll
EXTERN CSTRING trimhan(CSTRING,CSTRING) hantozen001.dll
EXTERN CSTRING zen_to_han(CSTRING,CSTRING) hantozen001.dll
EXTERN CSTRING trimzen(CSTRING,CSTRING) hantozen001.dll
EXTERN CSTRING hira_to_kata(CSTRING,CSTRING) hantozen001.dll
EXTERN CSTRING kata_to_hira(CSTRING,CSTRING) hantozen001.dll
*ATOK 2007 Win32APIはや
EXTERN CSTRING kanji_to_han(CSTRING,CSTRING) hantozen001.dll
*IME 2007 COMインターフェイスおそ
EXTERN CSTRING kanji_to_kana(CSTRING,CSTRING) hantozen001.dll
*kanji_to_kanaでopenとcloseを分けたもの下記のように使います
EXTERN CLONG openife(CVOID) hantozen001.dll
EXTERN CSTRING getife(CLONG,CSTRING,CSTRING) hantozen001.dll
EXTERN CVOID closeife(CLONG) hantozen001.dll
set talk off
STORE '。「」、・ヲァィア゛オ゛ゥェォャヴメモ田中ュョッー鈴木キケコサシスセあ゛Acあ゜゜あ゜ソタダヂヅツレロワン゛゜' TO a
STORE SPACE(200) TO a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11
? '【元】'
? a
? '【全角に】'
stor han_to_zen(a,a1) to a1
? a1
? '【半角を削除】'
stor trimhan(a,a2) to a2
? a2
? '【半角に】'
stor zen_to_han(a,a3) to a3
? a3
? '【全角を削除】'
stor trimzen(a,a4) to a4
? a4
? '【カタカナに】'
stor hira_to_kata(a,a5) to a5
? a5
? '【ひらがなに】'
stor kata_to_hira(a,a6) to a6
? a6
? '【漢字を半角に】'
stor kanji_to_han(a,a7) to a7
? a7
? '【漢字をかなに】'
stor kanji_to_kana(a,a8) to a8
? a8
? kanji_to_han('千葉県浦安市舞浜 東京ディズニーランド',a9)
? kanji_to_kana('千葉県浦安市舞浜 東京ディズニーランド',a10)
*getife()を使う場合は1回だけ初めにopenife()を終わりにcloseife()を使います
store openife() to ife01
use argyuubin.dbf
stor 1 to c
do while c<=10
stor space(200) to a11
*ここのように繰り返すときはgetife()が速いです
stor getife(ife01,trim(data3),a11) to a11
? a11
skip
stor c+1 to c
endd
closeife(ife01)
xさん、こんにちは。いろいろありがとうございます。
hantozen001.dllのkanji_to_kanaって以前から入ってましたっけ?
試してみました。こちらもとても使い勝手がよかったです。
また、openife-getife-closeifeを使った方がいくらか早いような気もしました。気のせい?
getphoneticが変換前の「かな」、今回のが「漢字の読みの第1候補」と理解すればよろしいでしょうか?
どちらもアプリに組み込んで使えそうですが、IMEがATOKだと問題が起きるなんてことはないでしょうか?
hantozen001.cppのBCCによるコンパイルは、msime.hをマイクロソフトからダウンロードして使いました。
最新バージョン1.4ではコンパイル不可、1.3ではOKでした。
ご報告まで。
xさん、すばらしいです。
MSのIMM2003ですが、うまく動きました。
サザンの掲示板に書き込まれたらいかがでしょう?
投稿者:x 投稿日:07月12日(月)13時56分49 [43]
keybd001.dllにgetphonetic()を入れました最後に確定された分のフリガナだけしか戻りませんのでぱっとしませんkanji_to_han()ですと千葉県浦安市舞浜 東京ディズニーランド(途中に空白があってもok)などがいっきに半角カタカナになりおぉという感じでしたが・・・
EXTERN CSTRING getphonetic(CSTRING) keybd001.dll
*
*
*
*DEFINE ENTRYFIELDのVALIDのfunctionの中で
store space(200) to buf01 && バッファを確保
store getphonetic(buf01) to text01
? text01
xさん、おはようございます。
> 不具合ばかりで恐縮です
とんでもありません。ソースも公開していただいているので、勉強させていただいています。
> 他のやり方でぼちぼちやってみます
すみません。もしできたらARAGOユーザーは大喜びじゃないでしょうか。
投稿者:x 投稿日:07月11日(日)15時58分48 [41]
不具合ばかりで恐縮ですkanji_to_han()はATOK 2007(Vista)ですとうまく動きましたがMicrosoft Office IME 2007では動きませんでした他のやり方でぼちぼちやってみます漢字の読みの入力はエクセル住所録などでよく使われていますね
漢字かな変換 投稿者:inaba 投稿日:07月11日(日)04時51分33秒 [40]
xさん、おはようございます。いろいろありがとうございます。
> kanji_to_han()入れました
aragow6.7とaragow4.5でzenhan.prgを動かすとkanji_to_hanは空白文字列になりました(他はOKです)。
> Microsoft Visual C++でコンパイルしています
あ、そういうことなんですね。BCCとばかり思ってました。
投稿者:x 投稿日:07月10日(土)15時15分30 [39]
hantozen001.dllにkanji_to_han()入れました素人丸出しのものですがテスト用くらいにはなるかとここではMicrosoft Visual C++でコンパイルしています
いろいろネットで調べながらgetversion001.cppを以下のように書き直したら動きました。
(1)下の1行を追加
__declspec(dllexport) void WINAPI dllmain(void){}
(2)すべての関数の前に WINAPI を挿入
__declspec(dllexport) char * WINAPI getversion(char * file01,char * property01,char * string01);
コマンドラインでコンパイルするのと何か別のツールでコンパイルするのでは、ソースが違うのでしょうか?
次々と矢継ぎ早ですが、すみません。
IMEコントロールでよくあるのが、ひらがな入力して漢字変換すると漢字フィールドに漢字が入り、ルビフィールドにひらがなが入るというコントロールです。
これをARAGOでEXTERNしたいのですが、可能でしょうか?
xさん、こういう場を準備していただいてありがたく存じます。
ご指導どうりBCCをインストールしましたので、私もDLLを作ってみようかと、
cppのソースをいただいてコンパイルし、dllはできあがりましたが、prgでEXTERNすると、aragoが「ロードできません」とエラーを吐き出します。
cppはまったく書き換えていません。
どういうことが考えられるでしょうか?
コンパイルに当たっての注意点など、お気づきのことがありましたら、ご教授くださいませ。
しつこくてすみません 投稿者:inaba 投稿日:07月07日(水)21時55分00秒 [35]
xさん、わざわざテストしていただき、ありがとうございます。
> aragowのプロジェクトで生成されるexeはリソースを変更する
というくだりに反応してしまいました。
aragoで作成したexeは元々リソースがないというか、リソース部分は代わりにargrun.dllが担っているというか・・という気がします。
で、気になったのは xさんが「リソースを変更する」とおっしゃってる部分です。
言葉どうりなら、「リソースの変更」と「リソースの追加」とでは何か違うような・・。
ResHackerでは「変更」ではなく「追加」で期待どうりになりました。
別件ですが、dll作成について改めて投稿させていただきます。
投稿者:x 投稿日:07月07日(水)15時44分20 [34]
ご指摘のとおりでaragowのプロジェクトで生成されるexeはリソースを変更するとファイルのサイズが変わるためかInvalid Executable Fileのダイアログが表示されて実行できませんでした。
xさん、おはようございます。とても興味深く、不思議なことがおこりました。
1 コマンドプロンプトで実行したら、Cannot open file: winver.h とエラー
aragoのrunの時はプロンプト画面が一瞬にして消えたので気がつかなかったのですね。
2 bcc55\binにpathを通し、bcc32.cfgとilink32.cfgを作り再実行しても同じエラー
3 Includeという環境変数を作り、値をbcc55\includeにし、再実行するとみごとOK。
当該EXEのプロパティにバージョン情報が追加されました。
ところが
4 そのhoge.exeを実行すると、[Invalid executable file]エラーダイアログ(arago4.5)と出ました。
hoge.exeはarago.6.7でコンパイルしたもので、ファイルサイズを比べると正常なものは173kb、コマンドプロンプトでリソースを追加したものは48kbでした。
5 コマンドプロンプトで実行後にできたhoge.resをResourceHackerというソフトで元の正常なhoge.exeにリソース追加を実行すると、すべてOKでした。
どういうことが起きたのか不思議です。
投稿者:x 投稿日:07月05日(月)22時58分05 [32]
書き込みありがとうございます
notepadで下記のtemp@@@.rcを作ってコマンドラインでC:\borland\bcc55\Bin\brc32.exe temp@@@.rc test.exe(書き込むファイル)を実行するとどうですかbrc32.exeとtemp@@@.rcと書き込むファイルのディレクトリはokですか?
#include <winver.h>
VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,2,3,4
PRODUCTVERSION 6,6,7,8
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS 0x00000000L
FILEOS VOS__WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x411, 1200
END
BLOCK "StringFileInfo"
BEGIN
BLOCK "041104b0"
BEGIN
VALUE "FileDescription","説明だよー\0"
VALUE "LegalCopyright","著作権だよー\0"
VALUE "FileVersion","ファイルバージョンだよー\0"
VALUE "CompanyName","会社名だよー\0"
VALUE "OriginalFilename","正式ファイル名だよー\0"
VALUE "ProductVersion","製品バージョンだよー\0"
VALUE "ProductName","製品名だよー\0"
VALUE "InternalName","内部名だよー\0\0\0\0\0\0"
END
END
END
サザンの掲示板からたどってきました。
工夫次第でいろいろな使い方ができそうなDLL、ありがとうございます。
標記のリソース書き込みについての質問です。
ご指導どうり、BolandのC++をインストールしてPRGを実行してみましたが、うまくいきませんでした。
コンパイル時にエラーは出ませんでしたが、リソースは書き換わっていないようです。
どんなものでしょうか?
投稿者:x 投稿日:04月18日(日)16時45分00 [30]
以前のstore tran(a&G.,"@Z 99,999,999.99") to TR_KIN&G.で","を削除するのはstore filter(x,'","') to bでできますねON EVENT "CLOSE" ONCLOSE()はPOBJECTSフォルダにあり皆さん使い古されていると思いますがaragow自前のON EVENT "CLOSE" ONCLOSE()で×ボタンもCtrl+F4もAlt+F4も処理できますのでそれではだめですか?rmclosebtn()は×ボタンを灰色にして無 効にしますがAlt+F4で閉じてしまいます(Alt+F4を無効にすることもできますがCtrl+F4を無効にするのが煩雑です)下記のように ACTIVATE PANELの前にrmclosebtn()やON EVENT "CLOSE" ONCLOSE()を入れます
EXTERN CVOID rmclosebtn(CVOID) keybd001.dll
*
*
*
rmclosebtn()
ON EVENT "CLOSE" ONCLOSE()
ACTIVATE PANEL PANEL01 MODAL
*:************************************************************
FUNCTION ONCLOSE
PRIVATE PNL, RTN
PNL = EVENT("PANEL") && イベントの発生したパネル名を取得
IF EMPTY(PNL)
wait "Alt+F4が押されました"
* wait "プログラム内の終了処理により終了して下さい"
RTN = .F. && 何もせずに戻る
* RTN = .T. && パネルを閉じる
ELSE
wait "Ctrl+F4が押されました"
RTN = .F. && 何もせずに戻る
* RTN = .T. && パネルを閉じる
ENDIF
RETURN RTN
:X さん こんにちは Mishina です
keybd001.dll の件で 下記のような記述で宜しいですか?
目的は _ロX の[X] の働きを止めたいです。
EXTERN CVOID rmclosebtn(CVOID) keybd001.dll
*
ON EVENT "CLOSE" ONCLOSE()
*
*****************************
FUNC ONCLOSE
rmclosebtn()
RETURN .T.
投稿者:x 投稿日:03月02日(火)13時27分56 [24]
client1.prgのやり方でaragowアプリケーションから/cgi-bin/aragoi.exe?version.prg+ID12345678などとcgiを読みに行きaragoiの version.prgでIDに合わせたデータ(新しいバージョンの情報やチェックサム)を送り返しaragowアプリケーションでデータを変数に受信し て自分のバージョンのデータと比較してバージョンが新しければ表示するなどできると思いますここまでは送受信エラーが起こっても大きな問題にはならないと 思いますが次にclient.prgのやり方でaragowアプリケーション本体をダウンロードして切り替える場合にはダウンロードしたファイルのチェッ クを十分にする必要があると思いますmd5checksum()を追加しました
投稿者:x 投稿日:03月01日(月)20時16分35 [18]
テキストファイルはclient1.prgで1行ずつstore subs(string01,1,n) to array[1]のように変数に入れることもclient.prgでtest.txtなどファイルにダウンロードすることもできますバイナリファイルは1 行ずつの受信はできません
投稿者:x 投稿日:03月01日(月)19時11分07 [17]
aragoiからファイルを送る場合FOUTPUT() (aragoiのマニュアル参照)を使うとテキストファイルもバイナリファイルも送れますindex.htm(テキストファイルの例)や sample.doc(ワードのファイルバイナリファイルの例)を作ってserver.prgをコピペして(その中でファイル名をfile01に MIME(ブラウザで表示させる場合text/html、ダウンロードさせる場合text/plain)をmime01にstoreしている)ブラウザで /cgi-bin/aragoi.exe?server.prgや/cgi-bin/aragoiu.exe?server.prgを表示してみてくださ い前者ではファイルの中身が表示され後者ではダウンロードとなると思います(肝はFOUTPUT()が Content-Length:やContent-Disposition: attachment; filename=を送らないのでOUTPUT()コマンドで送る)ブラウザでうまく表示されたらaragowでclient1.prg(テキストファイ ル受信用)やclient.prg(ファイルダウンロード用)で受信してみてください
追記resvsockfile(sock,'ファイル名',ファイルサイズ,タイムアウト)と4番目の引数タイムアウト(だいたい10~30秒)を付けました
お世話になります。
httpd001.dllをテストさせて頂きました。cliant.prgは理解できました
server.prgが良く理解できておりませんが、もう少し説明をして頂くとありがたいです。
旨く出来ました 投稿者:Mishina 投稿日:02月24日(水)12時00分52 [13]
:Xさん ありがとう御座いました。
私が間違えていました。 encode001.dll のおき場所の指摘を受けてハッとしました。
おかげさまで、文字化けせずに保存することが出来ました
EXTERN CSTRING shift_to_utf(CSTRING,CSTRING) &DR_D.encode001.dll
ちなみに、全て SHIFT_JIS ARAGOI で AJAXは使えることも解りました。
ご指導に感謝しております。 三品隆成
投稿者:x 投稿日:02月24日(水)06時48分16 [12]
私はaragoiuを持っていませんので下記を test.prgとしてaragoi?test.prgとaragoiu?test.prgとでブラウザのエンコーディングを変えてみてどう表示されるか 教えてくださいtest.prgとaragoi.exeとaragoiu.exeとのどのフォルダにencode001.dllを入れていますか?
SET COMPATIBLE OFF
EXTERN CSTRING shift_to_utf(CSTRING,CSTRING) encode001.dll
output('Content-type: text/html',1)
output('',1)
output('!00010,テストの商品,5,5600,!00020,二行目の商品,3,15000',1)
data='!00010,テストの商品,5,5600,!00020,二行目の商品,3,15000'
output(data,1)
store data to string01
store space(200) to string02
store shift_to_utf(string01,string02) to string02
output(string02,1)
:Xさん お世話掛けております 三品と申します。
以下は ajaxから引数を持って aragoiuで受け取りdbfに格納する為の一部です。
教えて頂いた encode001.dll を使って記述しましたが※の場所が通過できません。
尚 ARAGOWU では 問題なく出来ました
set century on
set exact on
set date to ansi
set compatible off
set lock on
dr_d="../cgi-bin/sanso/"
netok=.t.
*(:X氏)提供
EXTERN CSTRING shift_to_utf(CSTRING,CSTRING) encode001.dll
* dataには10行分のデータが入力されている "00010,テストの商品,5,5600,!00020,二行目の商品,3,15000,!)
* ajax から10行分のデータを一度に取り出し、後方でレコードとフィールドに取り出す
data=getarg(2)
* 此処で shift_to_utf を働かせたい
store data to string01
store spac(1000) to string02
* 此処で止まる
※store shift_to_utf(string01,string02) to data &&この行が通過出来ない?
zei=getarg(3) &&消費税 文字 999999
heder=getarg(4) &&ヘッダー 得意コード 日付け "12342010/02/04"
以下 中略 レコードをFIELD毎に切り出す場所
BDATA=gyo&sno. &&一レコード分のデータ
for j=1 to 4 &&項目数=4
bno=str(j,2,0,"0")
lll=len(BDATA)
bb=at(",",BDATA)
BDATA&bno.=left(BDATA,bb-1)
if .not. empt(BDATA)
DO CASE
CASE J=1
TR_SCO=BDATA&bno. &&商品コード5桁
CASE J=2 &&此処が日本語フィールド
*string01 = BDATA&bno.
*string02 = SPACE(200)
※store shift_to_utf(string01,string02) to tr_sna &&此処で止まる
TR_SNA=BDATA&bno.
CASE J=3
TR_SUU=VAL(BDATA&bno.) &&数量
CASE J=4
TR_TANKA=VAL(BDATA) &&単価
ENDCASE
BDATA=righ(BDATA,lll-bb)
else
exit
endif
TR_DEN=BANGOC
TR_KIN=TR_SUU*TR_TANKA
next
if .not. empt(tr_sco) &&行毎に登録
SELE TRUN
APPE AUTO
endif
****************************************************
※ shift_to_utf(string01,string02) を使用したいのはどちらか一箇所ですがどちらで行っても
この行がとおりません。
投稿者:x 投稿日:01月07日(木)18時24分10 [7]
*aragowでdebug
*Cookieの読み書きDLLです(charset=UTF-8)
SET COMPATIBLE OFF
EXTERN CSTRING recvcookie(CSTRING) cookie001.dll
EXTERN CVOID sendcookieutf(CSTRING) cookie001.dll
EXTERN CSTRING shift_to_utf(CSTRING,CSTRING) cookie001.dll
EXTERN CVOID disputf(CSTRING) cookie001.dll
*****
store '' to debugoutput01
STORE space(6000) to recvutf01
store recvcookie(recvutf01) to recvutf01
IF LEN(recvutf01)=0
STORE space(1000) to recvutf01
STORE shift_to_utf('ありませんもう一度アクセスすると・・・',recvutf01) TO recvutf01
endi
debugoutput('Content-type: text/html; charset=UTF-8',1)
*output('Set-Cookie: name=123abc',1)
*store 'NAME=tanaka日本語; expires=Fri, 31-Dec-2010 23:59:59 GMT;' to send01
STORE 'name=123abc東京特許許可局' TO send01
store space(1000) to sendutf01
store shift_to_utf(send01,sendutf01) to sendutf01
*sendcookieutf(sendutf01)
debugoutput('',1)
outpututf('<html><head><title>Cookieの読み書き</title></head><body>')
outpututf('このcgiから送ったcookieは<br>')
debugoutput(sendutf01,1)
outpututf('<br>です<br>')
outpututf('あなたから送り返されたcookieは<br>')
debugoutput(recvutf01,1)
outpututf('<br>です</body></html>')
*****
disputf(debugoutput01)
func outpututf
para output01
store space(1000) to outpututf01
store shift_to_utf(output01,outpututf01) to outpututf01
debugoutput(outpututf01,1)
retu .t.
func debugoutput
para debugoutput02,dummy
store debugoutput01+debugoutput02+chr(13) to debugoutput01
retu .t.
投稿者:x 投稿日:01月03日(日)08時55分10 [6]
Safariは日本語をエンコードしないと動かない
Firefoxでcookies.sqliteがおかしくなっているとcookieが保存されない
投稿者:x 投稿日:01月01日(金)10時05分01 [4]
エンコードデコードしなくても普通に動くようで
それならそれでいいけどどこかにそう書いてあるのかな
投稿者:x 投稿日:01月01日(金)00時44分33 [3]
2009.12.31不具合を直しました
Safari Operaでもokです
2010年
投稿者:x 投稿日:12月31日(木)15時34分07 [2]
SET COMPATIBLE ON|OFF offにすればspace254以上でもokですね
投稿者:x 投稿日:12月31日(木)14時36分54 [1]
cookieの読み書き
ブラウザがIE Firefox ChromeではokですがSafari Operaでは変ですね
2009年