Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.02.2016, 01:13
JustProSkill JustProSkill вне форума
Прохожий
 
Регистрация: 21.02.2016
Сообщения: 17
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию Помогите открыть файл

Есть кусочек кода на другом языке. Мне нужно так же открыть этот файл в делфи и загрузить в Мемо.
Код:
    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;
    }
Админ: Пользуемся тегами для оформления кода!

Последний раз редактировалось Admin, 21.02.2016 в 12:42.
Ответить с цитированием
  #2  
Старый 21.02.2016, 02:06
Аватар для @Rafa3L
@Rafa3L @Rafa3L вне форума
Начинающий
 
Регистрация: 09.11.2011
Адрес: Москва
Сообщения: 144
Версия Delphi: XE2
Репутация: 11216
По умолчанию

Код:
const
fn = 'HandRanks.dat';
procedure TForm1.Button1Click(Sender: TObject);
begin
 if FileExists(fn) then
  Memo1.Lines.LoadFromFile(fn)
  else 
   ShowMessage(fn + ' not found');
end;


4250
__________________
Помогаю платно.
Помогаю иногда бесплатно.
Ответить с цитированием
  #3  
Старый 21.02.2016, 03:22
JustProSkill JustProSkill вне форума
Прохожий
 
Регистрация: 21.02.2016
Сообщения: 17
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию

я уже так пробовал)) ничего не вышло
Ответить с цитированием
  #4  
Старый 21.02.2016, 03:49
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Содержимое файла можно посмотреть?
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #5  
Старый 21.02.2016, 11:10
JustProSkill JustProSkill вне форума
Прохожий
 
Регистрация: 21.02.2016
Сообщения: 17
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию

Нельзя, но как я понял, там должна быть информация по заранее просчитанным исходам в покере рука vs диапазон для определения её эквити (чтобы программа могла работать быстрее, не рассчитывала результат(как сделал я) а искала в этом файле)
Ответить с цитированием
  #6  
Старый 21.02.2016, 12:32
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Загрузить то его можно как угодно. Видимо он содержит спецсимволы, которые мемо отказывается показывать, он же для текстовых данных предназначен. Вопрос, что вы делать дальше будете с этими данными?
Код:
Var
  F: File;
  Lut: Pointer;
begin
 AssignFile(F, 'H:\Downloads\1\wand.dat');
 Reset(F, 1);
 GetMem(Lut, SizeOf(F));
 BlockRead(F, Lut^, SizeOf(Lut));
//Содержимое будет в переменной Lut, но что дальше?
 CloseFile(F);
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 21.02.2016, 14:12
JustProSkill JustProSkill вне форума
Прохожий
 
Регистрация: 21.02.2016
Сообщения: 17
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию

http://suffe.cool/poker/evaluator.html
Вот весь код (по идее там должны быть карты):

Код:
namespace eval
{
public struct TPTEvaluator
{
    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;
    }

    public unsafe static int LookupHand(int[] cards) // to get a hand strength
    {
        fixed (int* pLut = _lut)
        {
            int p = pLut[53 + cards[0]];
            p = pLut[p + cards[1]];
            p = pLut[p + cards[2]];
            p = pLut[p + cards[3]];
            p = pLut[p + cards[4]];
            p = pLut[p + cards[5]];
            return pLut[p + cards[6]];
        }
    }
}
Админ: для кода существует тег CODE, а цитата предназначена для другого.

Последний раз редактировалось Admin, 21.02.2016 в 14:54.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:31.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter