Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите прочитать файл [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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо