掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
EAccessViolationエラーを解消するには? (ID:18835)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
以下の関数を実行すると、2つ目のループの 0 :dbd.GetTLV('YEAR_TOTAL_1',0,tmpdbd); のところでEAccessViolationエラーになってしまいます。 ループをどちらかひとつ消すとエラーが出ないのですが、 2つ書くと出てしまいます。 このソースの元ソース(若干変数が違うだけ)ではエラーが出ないので 原因がわかりません。 気になる点があったら教えてください。 ちなみにやっている内容はデータベースから取得した残高(1つ目ループ) と、年度累計残高(2つ目ループ)をセットするというものです。 function TSupplierBSReferenceFrame.SetUpBalanceData(var dbd: THttpDBData): boolean; var tmpdbd :THttpData; i,ii,idx,cnt :Integer; ttl,ttlfin:Int64; ItemList :TStringList; begin // 初期処理 ItemList := TStringList.Create; Try For i := 0 To m_TableInfo.RowCount - 1 Do Begin ItemList.Add(m_TableInfo.Data['SUPPLIER_CODE',i]); End; For i := 0 To 13 Do Begin tmpdbd := THttpData.Create; Try Case i Of 0 :dbd.GetTLV('NORMAL_BALANCE',0,tmpdbd); // 当期残高の取得s 1 :dbd.GetTLV('PRE_TERM_BALANCE',0,tmpdbd); // 前期残高の取得 2 :dbd.GetTLV('PRE_YEAR_BALANCE',0,tmpdbd); // 前年同期残高 3 :dbd.GetTLV('PRE_YEAR2_BALANCE',0,tmpdbd); // 前々年同期残高 Else Continue; End; If Not Assigned(tmpdbd) Then Continue; If Not GetTTLData(tmpdbd,cnt,ttl,ttlfin) Then Continue; For ii := 0 to cnt - 1 Do Begin idx := SearchRowByItem(ItemList,tmpdbd.GetString('SUPPLIER_CODE',ii)); If idx = -1 Then Continue; SetData(m_TableInfo,tmpdbd,idx,ii,i,ttl,ttlfin); End; Finally tmpdbd.Free; End; End; For i := 0 To 12 Do Begin tmpdbd := THttpData.Create; Try Case i Of 0 :dbd.GetTLV('YEAR_TOTAL_1',0,tmpdbd); // 前年累計 1 :dbd.GetTLV('YEAR_TOTAL_2',0,tmpdbd); // 前々年累計 Else Continue; End; If Not Assigned(tmpdbd) Then Continue; If Not GetTTLData(tmpdbd,cnt,ttl,ttlfin) Then Continue; For ii := 0 to cnt - 1 Do Begin idx := SearchRowByItem(ItemList,tmpdbd.GetString('SUPPLIER_CODE',ii)); If idx = -1 Then Continue; SetFinalData(m_TableInfo,tmpdbd,idx,ii,i,ttl,ttlfin); End; Finally tmpdbd.Free; End; End; Finally ItemList.Free; End; Result := True; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.