Skip to content

Instantly share code, notes, and snippets.

@ritalin
ritalin / MyForm.pas
Created June 12, 2014 05:07
Class for binding to all child control property in a control (eg: TLayout,...)
procedure MyForm.AfterConstruction;
var
expr: TExpressionItem;
begin
inherited;
BindList2 := TBindControlList.Create(Self);
BindList2.SourceComponent := AdapterBindSource1;
BindList2.SourceMemberName := 'ColorsName1';
program RecGenerics;
uses
System.SysUtils;
type
IHogeClass<T> = interface;
TTest<T> = record
Value: T;
// OK
IEnexArraycollection = interface(ICollection<TArray<integer>>)
function Op: TEnexExtOps<TArray<integer>>;
end;
// NG
IEnexArrayCollection<T> = interface(ICollection<TArray<T>>)
function Op: TEnexExtOps<TArray<T>>;
end;
@ritalin
ritalin / ExampleTest.pas
Created April 17, 2014 04:35
Should-base unit test for DUnitX
unit ExampleTest;
interface
uses
DUnitX.TestFramework;
type
[TestFixture]
TMyTestObject = class(TObject)
function Enter-Using-Undisposable($receiver, [scriptblock]$body, [scriptblock]$finally) {
try {
return $receiver | % { & $body }
}
finally {
& $finally
}
}
function Enter-Using-Excel([scriptblock]$block) {
function Get-ExcelData([parameter(Mandatory=$true, ValueFromPipeline=$true)]$files, [switch]$withHeader) {
function Get-ExcelData-Header([ref]$rowsRef) {
if (($withHeader) -and ($rowsRef.Value.Count -gt 0)) {
$row = $rowsRef.Value.item(1)
try {
$columns = $row.columns
try {
for ($c = 1; $c -le $columns.Count; ++$c) {
$col = $columns.item($c)
@ritalin
ritalin / JodaTimePeriodConverter.java
Created January 15, 2014 05:56
Period (Joda Time) <-> PostgreSQL Interval converter for Doma(http://doma.seasar.org/)
package sample.converters;
import java.sql.SQLException;
import org.joda.time.Period;
import org.postgresql.util.PGInterval;
import org.seasar.doma.ExternalDomain;
import org.seasar.doma.jdbc.domain.DomainConverter;
@ExternalDomain
package ;
import haxe.macro.Context;
import haxe.macro.Expr;
using Lambda;
class ShortLambda {
public static function build(): Array<Field> {
var fields = Context.getBuildFields();
// こんなふうに、外側の変数を束縛すると、関数定義を変更する必要が無くなる
function outer() {
$n = 10;
$m = 200;
my_func(function($i, $x) use($n) { return $n + $n }, [10, 20, 30]);
my_func(function($i, $x) use($n, $m) { return $n + $n * $m }, [10, 20, 30]);
}
// こうしてもいいんだけど・・・・
function outer() {
$n = 10;
my_func($n, function($i, $x) { return $x + $i }, [10, 20, 30]);
}
function my_func($i, closure $callback, array $a) {
foreach ($a as $x) {