お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"TInt32List"

この発言は
#00888 寅次 さんのTIntegerList
に対するコメントです

この発言に対し以下のコメントが寄せられています
#00940 寅次 さん RE:TInt32List

#888 寅次さん こんにちは。稀杜です。 <TInt32List>>  僕が使っている TInt32List です。TList を本来の(?)目的で使っていま す。(^_^;  TList.Items[n] をポインタとして使っているので、  Longint -> Smallint に置き換えると TInt16List が、  Longint -> Shortint に置き換えると TInt8List が作れます。Delphi4以降 なら TInt64List も作れるでしょう。  寅次さんの TIntegerList と同様に、TList とほとんど同じプロパティ&メ ソッドが使えます。Items[n] でアクセス、Add で追加、Insert で挿入、 Delete で削除です。  LoadFromStream, SaveToStream はおまけです。 ---IntxLists.pas--- unit IntxLists; interface uses Classes; type TInt32List = class(TList) protected function Get(Index: Integer): Longint; procedure Put(Index: Integer; Value: Longint); public destructor Destroy;override; property Items[Index: Integer]: Longint read Get write Put; default; function Add(Item: Longint): Integer; procedure Insert(Index: Integer; Item: Longint); procedure Delete(Index: Integer); function First: Longint; function Last: Longint; procedure SaveToStream(Stream: TStream); procedure LoadFromStream(Stream: TStream); end; implementation const SizeOfShortint = SizeOf(Shortint); SizeOfSmallint = SizeOf(Smallint); SizeOfLongint = SizeOf(Longint); type PShortint = ^Shortint; PSmallint = ^Smallint; PLongint = ^Longint; destructor TInt32List.Destroy; var i: Integer; begin for i := 0 to Count - 1 do Dispose(PLongint(inherited Get(i))); inherited Destroy; end; function TInt32List.Get(Index: Integer): Longint; begin Result := PLongint(inherited Get(Index))^; end; procedure TInt32List.Put(Index: Integer; Value: Longint); begin PLongint(inherited Get(Index))^ := Value; end; function TInt32List.Add(Item: Longint): Integer; var x: PLongint; begin New(x); x^ := Item; Result := inherited Add(x); end; procedure TInt32List.Insert(Index: Integer; Item: Longint); var x: PLongint; begin New(x); x^ := Item; inherited Insert(Index, x); end; procedure TInt32List.Delete(Index: Integer); begin Dispose(PLongint(inherited Get(Index))); inherited Delete(Index); end; function TInt32List.First: Longint; begin Result := Get(0); end; function TInt32List.Last: Longint; begin Result := Get(Count - 1); end; procedure TInt32List.SaveToStream(Stream: TStream); var i: Integer; tmp: Longint; begin Stream.WriteBuffer(Count, SizeOf(Integer)); for i := 0 to Count - 1 do begin tmp := Get(i); Stream.WriteBuffer(tmp, SizeOfLongint); end; end; procedure TInt32List.LoadFromStream(Stream: TStream); var ItemCount, i: Longint; tmp: Longint; begin for i := 0 to Count - 1 do Dispose(PLongint(inherited Get(i))); Clear; Stream.ReadBuffer(ItemCount, SizeOf(Integer)); for i := 0 to ItemCount - 1 do begin Stream.ReadBuffer(tmp, SizeOfLongint); Add(tmp); end; end; end. --- 1999/09/18(Sat) 12:08 YQW11350 稀杜 Original document by 稀杜 氏 ID:(YQW11350)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum