Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

2011 / 7月

ASP 関係続き...

ログ
 AsFile.FileSys.Log(LPCTSTR message) { return ::LogMessage(message) ; }

TempFile
 AsFile.FileSys.GetDirTemp() + “TempFile.txt”
  logData = oFSys.TextFileRead(logFile)
  logData = logData & Now & vbTab & “LogData” & vbCrLf
  oFSys.TextFileWrite logFile,logData


  にほんブログ村 IT技術ブログへ


しばらく使ってなかったので,…

並び替え
  ”SELECT * FROM Table_H_T_M_ ORDER BY U_1,U_2 ;”
  ”SELECT * FROM Table_H_T_M_ ORDER BY T_New,U_1,U_2 ;”
  ”SELECT * FROM Table_H_T_M_ ORDER BY T_Max,U_1,U_2 ;”
  ”SELECT * FROM Table_H_T_M_ ORDER BY H_No,U_1,N_ ;”

今回やりたいのは抽出なので WHERE
  ”SELECT * FROM Table_H_T_M_ WHERE H_No < 'M1000' ORDER BY H_No,U_1,N_ ;"
  "SELECT * FROM Table_H_T_M_ WHERE H_No LIKE ‘M0%’ ORDER BY H_No,U_1,N_ ;"

RecodeCount が -1 で返される
  デフォルトのカーソル adOpenForwardOnly
  ADO Recordset で RecordCount プロパティが -1 を返す場合
  oRS.CursorLocation = 3 ‘ adUseClient などとすれば良い
  または,oRS.Open source , connection , 3

全レコードの読み取り
  dim oRS
  set oRS = Server.CreateObject(“ADODB.recordset”)
  oRS.Open “Table” , “DSN=name”
  oRS.MoveFirst
  do while not oRS.EOF
    …
    oRS.MoveNext
  loop
  …
  oRS.Close

ASP の中止
  Response.End


  にほんブログ村 IT技術ブログへ


CString::ReleaseBuffer で Assert

CString::GetBuffer を使用して,ReleaseBuffer を忘れているバグがあった.
現象は,内容をコピーした別の CString で ReleaseBuffer した時にアサート.
—————————
Microsoft Visual C++ Debug Library
—————————
Debug Assertion Failed!
Program: …\…\TInet\Debug.060\TInet.exe
File: strcore.cpp
Line: 512
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
—————————
中止(A) 再試行(R) 無視(I)
—————————

他にも,GetLength で 0 になる.


  にほんブログ村 IT技術ブログへ


DoDragDrop ですぐに抜ける?

以下の様なコードで,COleDataSource::DoDragDrop の部分がすぐ抜ける.
  CStringArray sa ;
  ::ListBoxToStringArray(m_DropList,&sa,TRUE) ;
  {
    CByteArray ba ;
    ::StringArrayToString2Z(sa,&ba) ;
    int len = ba.GetSize() ;
    HDROP hDrop = (HDROP)::GlobalAlloc(GHND,sizeof(DROPFILES) + len + sizeof(TCHAR)) ;
    if (hDrop == NULL) { return ; }
    LPDROPFILES lpdf = (LPDROPFILES)::GlobalLock(hDrop) ;
    lpdf->pFiles= sizeof(DROPFILES) ;
    lpdf->pt.x = 0 ;
    lpdf->pt.y = 0 ;
    lpdf->fNC = FALSE ;
    lpdf->fWide = FALSE ;
    #ifdef _UNICODE
    lpdf->fWide = TRUE ;
    #endif
    LPCTSTR lpFileNames = LPCTSTR(LPCSTR(lpdf)+lpdf->pFiles) ;
    memmove(LPVOID(lpFileNames),ba.GetData(),len) ;
    ::GlobalUnlock(hDrop) ;
    {
      COleDataSource* ods = new COleDataSource ;
      ods->CacheGlobalData(CF_HDROP,hDrop) ;
      ods->DoDragDrop() ;
      delete ods ;
      }
    }

AfxOleInit() を呼出していなかった.


[VC50] Windows 95 標準コントロールのドラッグアンドドロップサンプル http://support.microsoft.com/kb/152092/ja


2014/08/11 追記
上のコードで,delete ods はうまくない.
データ オブジェクトとデータ ソース : 作成と破棄


  にほんブログ村 IT技術ブログへ



    top

    %d人のブロガーが「いいね」をつけました。