このブログ「吟遊詩人の戯言」 の記事検索...
1 2 3 4

Delphi5をWindows7 64ビット環境に突っ込んでみた

関連記事








結局,DELPHI案件から
逃げ切れなかったり(笑

 
 
 
 

NET FRAMEWORKのソケット通信

関連記事




テゲ,面倒じゃゾォ~

不具合じゃ不具合じゃ!

関連記事








サーバーソケットに不具合じゃ!!


あひゃひゃひゃっ!!


う~む,複数件の登録時,終端受け取って,受け取り完了コードをOrcaサーバに返すまで
次の電文,送ってこないかと思ったけど,どうやら電文,垂れ流してやがる(汗

Orcaからソケット接続要求あったら
接続要求のたんびに,接続要求ハンドルをキーとした上で,クライアント管理クラスのインスタンスを生成して
ハンドルをキーとして,ハッシュテーブルに登録

Orcaから電文投げつけ要求来たら
要求を投げつけてきた輩のキーを抜き取って
ハッシュテーブル上を検索し,管理オブジェクトを特定

電文を管理オブジェクト内に蓄積させて

んで,電文内に終端コードが,混ざってきたら,
電文全体を,ファイル出力し
受け取り完了コードをOrcaに送り返して
オブジェクトのインスタンスを破棄

ってな形に,実装を変えてみよう…

IXMLDOMNodeの検索PGサンプル

関連記事




こちらに,書き起こしてみましたわん


必要とされる方,お持ち帰り,ドゾー
バグってたら,スマソ(笑




やっと,検索部が,安定した
残りは,ノードからをジャンスカ引っ張ってくる実装だけやなぁ

こいつの実装数,半端なく多い
今日中に半分終わるかなぁ...

【Delphi】IXMLDOMNodeのノード追跡用コードのサンプル

関連記事








必要に迫られて,書き起こしてみた

悔いは無い(爆

また,どっかでこの手の追っかけ部,実装作業があったときの
自分自身のサンプル用に

次はC#辺りで,やりそう


なお,どことなく,ORCA~Claimの香りがするのは気のせいではない(笑

//**********************************************
//指定ノードの検索(再帰利用)
//
//nd : 検索開始点のノード (IXMLDOMNode)
//ndName : 検索対象のノード名称
//
//return : 見つけたノードオブジェクト(見つからなかったらnull)
//**********************************************
function TClaimInput.SearchNode(nd: IXMLDOMNode; ndName: string): IXMLDOMNode;
var
    i : integer;
    st : string;
begin

    result := nil;
    for i  :=  0 to  nd.childNodes.Get_length - 1  do
    begin
        st := nd.childNodes.item[i].Get_nodeName();
        if  st = ndName then
         begin
            result := nd.childNodes.item[i];
         end
        else
         begin
            result := SearchNode(nd.childNodes.item[i], ndName);
         end;

        if result <> nil then
        begin
            break;
        end;
    end;
end;

//**********************************************
//指定ノードの検索(再帰利用)(Overload)
//
//nd : 検索開始点のノード (IXMLDOMNode)
//ndName : 検索対象のノード名称
//attrName : 検索対象のノード属性名称
//attrVal  : 検索対象のノード属性値
//
//return : 見つけたノードオブジェクト(見つからなかったらnull)
//**********************************************
function TClaimInput.SearchNode(nd: IXMLDOMNode; ndName: string; attrName : string; attrVal : string): IXMLDOMNode;
var
    i : integer;
    j : integer;
    stn : string;
    stv : string;

    fl : boolean;
begin

    result := nil;
    for i  :=  0 to  nd.childNodes.Get_length - 1  do
    begin
        fl := false;

        stn := nd.childNodes.item[i].Get_nodeName();
        if  stn = ndName then
         begin
            for j := 0 to nd.childNodes.item[i].attributes.Get_length - 1 do
            begin
                stn := nd.childNodes.item[i].attributes.item[j].Get_nodeName();
                stv := nd.childNodes.item[i].attributes.item[j].Get_text();
                if (stn = attrName) and (stv = attrVal) then
                begin
                    fl := true;
                    break;
                end;
            end;
         end;

        if fl = true then
         begin
            result := nd.childNodes.item[i];
         end
        else
         begin
            result := SearchNode(nd.childNodes.item[i], ndName, attrName, attrVal);
         end;

        if result <> nil then
        begin
            break;
        end;
    end;
end;

//**********************************************
//指定ノードの1層上のノードを返す
//
//nd : 検索開始点のノード (IXMLDOMNode)
//
//return : 一個上位のノードオブジェクト
//**********************************************
function TClaimInput.SearchNodeParent(nd: IXMLDOMNode): IXMLDOMNode;
begin
    result := nd.Get_parentNode;
end;

1 2 3 4