Win32 API 日本語リファレンス
ホームStorage.Jet › JET_TUPLELIMITS

JET_TUPLELIMITS

構造体
サイズx64: 20 バイト / x86: 20 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
chLengthMinDWORD4+0+0タプル(部分文字列)インデックスで生成する最小タプル文字数。
chLengthMaxDWORD4+4+4生成する最大タプル文字数。
chToIndexMaxDWORD4+8+8インデックス対象とする先頭からの最大文字数。
cchIncrementDWORD4+12+12タプル生成時の文字数の増分。
ichStartDWORD4+16+16タプル生成を開始する文字位置(オフセット)。

各言語での定義

#include <windows.h>

// JET_TUPLELIMITS  (x64 20 / x86 20 バイト)
typedef struct JET_TUPLELIMITS {
    DWORD chLengthMin;
    DWORD chLengthMax;
    DWORD chToIndexMax;
    DWORD cchIncrement;
    DWORD ichStart;
} JET_TUPLELIMITS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct JET_TUPLELIMITS
{
    public uint chLengthMin;
    public uint chLengthMax;
    public uint chToIndexMax;
    public uint cchIncrement;
    public uint ichStart;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure JET_TUPLELIMITS
    Public chLengthMin As UInteger
    Public chLengthMax As UInteger
    Public chToIndexMax As UInteger
    Public cchIncrement As UInteger
    Public ichStart As UInteger
End Structure
import ctypes
from ctypes import wintypes

class JET_TUPLELIMITS(ctypes.Structure):
    _fields_ = [
        ("chLengthMin", wintypes.DWORD),
        ("chLengthMax", wintypes.DWORD),
        ("chToIndexMax", wintypes.DWORD),
        ("cchIncrement", wintypes.DWORD),
        ("ichStart", wintypes.DWORD),
    ]
#[repr(C)]
pub struct JET_TUPLELIMITS {
    pub chLengthMin: u32,
    pub chLengthMax: u32,
    pub chToIndexMax: u32,
    pub cchIncrement: u32,
    pub ichStart: u32,
}
import "golang.org/x/sys/windows"

type JET_TUPLELIMITS struct {
	chLengthMin uint32
	chLengthMax uint32
	chToIndexMax uint32
	cchIncrement uint32
	ichStart uint32
}
type
  JET_TUPLELIMITS = record
    chLengthMin: DWORD;
    chLengthMax: DWORD;
    chToIndexMax: DWORD;
    cchIncrement: DWORD;
    ichStart: DWORD;
  end;
const JET_TUPLELIMITS = extern struct {
    chLengthMin: u32,
    chLengthMax: u32,
    chToIndexMax: u32,
    cchIncrement: u32,
    ichStart: u32,
};
type
  JET_TUPLELIMITS {.bycopy.} = object
    chLengthMin: uint32
    chLengthMax: uint32
    chToIndexMax: uint32
    cchIncrement: uint32
    ichStart: uint32
struct JET_TUPLELIMITS
{
    uint chLengthMin;
    uint chLengthMax;
    uint chToIndexMax;
    uint cchIncrement;
    uint ichStart;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; JET_TUPLELIMITS サイズ: 20 バイト(x64)
dim st, 5    ; 4byte整数×5(構造体サイズ 20 / 4 切り上げ)
; chLengthMin : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; chLengthMax : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; chToIndexMax : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; cchIncrement : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; ichStart : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global JET_TUPLELIMITS
    #field int chLengthMin
    #field int chLengthMax
    #field int chToIndexMax
    #field int cchIncrement
    #field int ichStart
#endstruct

stdim st, JET_TUPLELIMITS        ; NSTRUCT 変数を確保
st->chLengthMin = 100
mes "chLengthMin=" + st->chLengthMin