PHPコードからDelphiへの変換を探しています。現在、私はPHPコードでIsset()関数を使って処理するときに立ち往生しています。下のコードをDelphiに変換する方法はありますか?delphiでisset()を使用する方法
0
A
答えて
0
$collection = array(
'doc1' =>'php powerbuilder',
'doc2' =>'php visual');
$dictionary = array();
$docCount = array();
foreach ($collection as $docID => $doc) {
$doc = strtolower($doc);
$terms = explode(' ', $doc);
$docCount[$docID] = count($terms);
foreach ($terms as $term) {
if (!isset($dictionary[$term])) {
$dictionary[$term] = array('df' => 0, 'postings' => array());
}
if (!isset($dictionary[$term]['postings'][$docID])) {
$dictionary[$term]['df']++;
$dictionary[$term]['postings'][$docID] = array('tf' => 0);
}
$dictionary[$term]['postings'][$docID]['tf']++;
}
}
PHPアレイはdocumentation、順序付けられたリストとして、またはハッシュマップ(辞書)として機能フリーサイズのデータ構造によれば、です。 Delphiには同様のビルトインデータ構造がありません。ベクトル(順序付きリスト)ビヘイビア、またはハッシュマップ/辞書ビヘイビアのいずれかしか取得できません。また、ジェネリックスを導入したバージョンであるため、辞書の動作はDelphi 2009+で簡単にアクセスできます。
inset
タイプの操作で使用できる使いやすいデータ構造は、TStringList
です(Sorted := True
モード)。しかし、これは本当の辞書ではなく、各文字列に関連する値を持つ文字列のソートされたリストです。
procedure Test;
var L: TStringList;
begin
L := TStringList.Create;
try
L.Sorted := True; // make the list "Sorted" so lookups are fairly fast
L.AddObject('doc1', SomeData); // SomeData can't be string, it needs to be TObject descendant
L.AddObject('doc2', SomeOtherData);
if L.IndexOf('doc3') = -1 then // this is equivalnt to the `inset` test
begin
// doc3 is not in list, do something with it.
end;
finally L.Free;
end;
end;
もちろんこれは完全な回答ではありませんが、始めてみるべきです。
+0
'TStringList'は2つのパラメータを取る' Add() 'メソッドを持っていません。代わりに、L.Add( 'doc1 =' + SomeData) 'または' L.Values ['doc1']:= SomeData'を使用し、 'L.IndexOfName()'を使用する必要があります。 –
関連する問題
- 1. DelphiでWriteProcessMemoryを使用する方法
- 2. DelphiでftrScanAPI.dllを使用する方法
- 3. DelphiでUMainを使用する方法
- 4. DelphiでtagDECを使用する方法
- 5. isset PHPでモーダルを使用する
- 6. Android用Delphi FiremonkeyでHextoBinを使用する方法
- 7. Delphiで単位ファイルを使用する方法
- 8. Delphi TWebBrowser - ログイン/パスワードでプロキシを使用する方法?
- 9. DelphiでスレッドのCPU使用率を追跡する方法
- 10. Delphi xeでHTTPクライアントAPIを使用する方法
- 11. Delphi-Mockフレームワークを使用してDelphiの子クラスでmockを使用する方法
- 12. Delphiコードを使用してSMSを送信する方法
- 13. Delphi 2010を使用してログイン/パスワードダイアログを作成する方法
- 14. 完了するまで次々とissetをチェックする方法
- 15. MSBuildとDelphi XE2を使用してビルドする方法
- 16. RTTIを使用してDelphi Array Propertiesにアクセスする方法
- 17. Delphi 10を使用してAndroidでバックグラウンドでサウンドを録音する方法
- 18. は、delphiでlibファイルを使用します。 libファイルをインポートする方法
- 19. DelphiでProcessMessagesを防止する方法
- 20. DelphiでDLLファイルをデバッグする方法
- 21. C#でDelphi DLLを使用する
- 22. DelphiでIVirtualDesktopManagerを使用する
- 23. delphiでMultiByteToWideCharを使用するには?
- 24. Delphiでチェックボックスを使用するには?
- 25. DelphiスレッドでCoInitializeを使用する
- 26. Delphi Win32でThriftを使用する
- 27. Delphi DataSnap RESTサーバーでJSONPを使用する方法はありますか?
- 28. Accessデータベースを使用してDelphiでデータベースアプリケーションにバックアップ機能をコーディングする方法
- 29. WinInet APIを使用してDelphiでHTTP POSTリクエストを送信する方法
- 30. RTTIを使用してDelphiでアクセスフィールドを取得する方法は?
これを実装するためにレコードの配列を組み合わせる必要がありますか? – akunyer
辞書を使用する必要があるようです。 –
ジェネリックであるかどうかを知るために、使用しているDelphiのバージョンを投稿してください。たぶん誰かがコードを書く時間を見つけるだろうが、ジェネリック医薬品が利用できるかどうかわからなくても、誰もベンチャーになることはないだろう。 –