Assertion Failed! -4ページ目

[C]リスト構造

久しぶりにC言語復習。

リスト構造。


-- Stack.c --


#include "Stack.h"
#include "List.h"


static List *stList;


void InitList()
{
  stList = (List*)malloc(sizeof(List));
}

int Pop()
{
  int iReturnValue = stList->value;
  Delete(stList);
  return iReturnValue;
}

void Push(int iValue)
{
  stList = Add(stList, iValue);
}


-- List.c --


#include <stdlib.h>
#include "List.h"


List* Add(List *pstNode, int iValue)
{
  List* pstNewNode = (List*)malloc(sizeof(List));

  pstNewNode->value = iValue;
  pstNewNode->next = pstNode;

  pstNode = pstNewNode;

  return pstNode;
}

void Delete(List *pstNode)
{
  List *pstDeleteNode = pstNode->next;
  free(pstNode);
  pstNode = pstDeleteNode;
}


-- List.h --

#pragma once

typedef struct LIST_TAG
{
  int value;
  struct LIST_TAG* next;
}List;


List* Add(List *pstNode, int iValue);
void Delete(List *pstNode);


[C#]

[Perl]日本語抽出

resxファイルとかから日本語文言を抽出するためにPerlを検討してみた。


ActivePerl 5.10 使用。

もう少し改良する必要があるけど、ある程度取れているのではないかと思う。



use strict;
use utf8;


open IN, "<:encoding(utf8)", "Form1.resx";
open OUT, ">:encoding(utf8)", "Form1out.resx";

while(<IN>)
{
my $match;
if(/<value>(.*)<\/value>/)
{
$match = ${1},"\n";
}
print ;
if($match =~ /\p{Hiragana}+/)
{
print OUT $_;
}
elsif($match =~ /\p{Katakana}+/)
{
print OUT $_;
}
#elsif($match =~ /\p{Punctuation}+/)
#{
# print OUT $_;
#}
elsif($match =~ /\p{Han}+/)
{
print OUT $_;
}

}

close OUT;
close IN;

test

[ADO]特定の列の重複を除いた行を表示する

特定の列の重複を除いた行を表示する。


データを単純にバインドするだけでは、前回 のようにすべての行データが表示され、重複した

データが存在することになる。


このようなデータから、重複を除いたデータを抽出するためには、DataViewクラスを使用する。

(データベースからのSELECT 文の時点でdistinctを使用してもよいが、抽出条件を変えたい時には

 またデータベースにアクセスしないといけなくなるので、トランザクションが増えることになる。

 データは必要なときに一気に取得し、キャッシュしたデータの中から抽出操作を行ったほうがよいでしょう。)


string connectionString = "略";


using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand("SELECT * FROM Employees", connection))
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
using (DataTable table = new DataTable())

{
  table.Locale = CultureInfo.InvariantCulture;
  try
  {
    adapter.Fill(table);
  }
  catch (SqlException)
  {
  }

  

  using (DataView view = new DataView(table))

  {

    comboBox1.DataSource = view.ToTable(true, "City");

    comboBox1.DisplayMember = "City";

  }

}


DataViewのコンストラクタにDataTableを渡し、ToTable()メソッドの第一引数(distinct)にtrueを設定する。

第二引数に、重複を除く列名を指定すれば、重複が除かれたDataTableが生成される。


それを、コンボボックスにバインドすると、次のような結果となる。

前回 とちがい、London のデータが重複していないことがわかる。



Assertion Failed!