![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите прочитать файл [D7]
AgroFish © (2016-02-21 01:13:00)Есть кусочек кода на другом языке. Мне нужно так же открыть этот файл в делфи и загрузить в Мемо.
public static int[] _lut;
public static unsafe void Init() // to load a table
{
_lut = new int[32487834];
FileInfo lutFileInfo = new FileInfo("HandRanks.dat");
if (!lutFileInfo.Exists)
{throw new Exception("Handranks.dat not found");}
FileStream lutFile = new FileStream("HandRanks.dat", FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 4096);
byte[] tempBuffer = new byte[32487834 * 4];
lutFile.Read(tempBuffer, 0, 32487834 * 4);
fixed (int* pLut = _lut)
{ Marshal.Copy(tempBuffer, 0, (IntPtr)pLut, 32487834 * 4);}
tempBuffer = null;
}
Kilkennycat (2016-02-21 13:02:00) [1]все, что нужно для понимания, что в файле dat
a)
var p = 53;
for (var i = 0; i < cards.length; i++) {
p = this.evalCard(p + cards[i]);
}
b)
evalCard: function(card) {
return this.ranks.readUInt32LE(card * 4);
}
}
c)
handType: p >> 12,
handRank: p & 0x00000fff,
value: p,
handName: this.HANDTYPES[p >> 12]
AgroFish (2016-02-21 12:36:00) [2]Это не курсовая, а для личного пользования. Я написал свой алгоритм, но он получился медленным 100 000 симуляций - 24сек. А эти алгоритмы, используют из HandRanks.dat какие то готовые просчитанные данные, и их скорость этого вырастает в 10-100 раз. А что там в этом файле, как получить доступ к данным, я ума не приложу, в инете нашёл несколько вариантов на С и ДжаваСкрипт, но понять их не могу.
Rouse_ (2016-02-21 12:05:00) [3]Зы писать код и продавать его за 20 тыщ принципиально не буду, но научить как это сделать - могу, если готов потратить на это свое время
Rouse_ (2016-02-21 12:02:00) [4]Рассчет силы руки в техасском холдеме?
Фига себе курсовые начали давать :)
AgroFish (2016-02-21 11:41:00) [5]JavaScript это
AgroFish (2016-02-21 11:39:00) [6]Есть готовый проект на Джава, с исходниками (Там кода макс 2 страницы)
https://github.com/chenosaurus/poker-evaluator
Есть кто то сможет переписать на делфи, куплю за 20ку.
Inovet (2016-02-21 11:30:00) [7]> [5] AgroFish (21.02.16 11:27)
> Содержимое файла посмотреть нельзя
Это как, не текстовый в смысле? Тогда зачем его грузить в Memo?
AgroFish (2016-02-21 11:27:00) [8]Содержимое файла посмотреть нельзя, но как я понял, там должна быть информация по заранее просчитанным исходам в покере рука vs диапазон для определения её эквити (чтобы программа могла работать быстрее, не рассчитывала результат(как сделал я) а искала в этом файле)
Rouse_ (2016-02-21 10:58:00) [9]Дим, человеку в Мемо загрузить нужно.
Каков вопрос - таков ответ
Dimka Maslov (2016-02-21 10:19:00) [10]
> Хотя по сути достаточно и вот такого вызова:
А из чего стало ясным, что файл текстовый, а не двоичный?
Rouse_ (2016-02-21 09:26:00) [11]Хотя по сути достаточно и вот такого вызова:
Memo1.Lines.LoadFromFile('HandRanks.dat');
Rouse_ (2016-02-21 09:25:00) [12]В чем проблема то? Открываешь и читаешь.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
procedure Foo;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.Foo;
var
S: TStringStream;
begin
S := TStringStream.Create;
try
S.LoadFromFile('HandRanks.dat');
Memo1.Text := S.DataString;
finally
S.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Foo;
end;
end.