Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2013, 05:31   #1
barhat
Пользователь
 
Аватар для barhat
 
Регистрация: 02.02.2012
Сообщений: 19
По умолчанию ошибка TPoint

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Inifiles, StrUtils, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  mapdata: TIniFile
  mapsize: TPoint;
  map: array [0..5000, 0..5000] of string;
  abstoreal: array [0..5000, 0..5000] of TPoint;
  realtoabs: array [0..5000, 0..5000] of TPoint;
  Cur: TPoint;
  mask: TBitmap;
  cursorx, cursory: integer;

implementation

{$R *.dfm}

function TForm1.paramscol(s:string; ch: char=','):integer;
Label 1;
var n,i nn,: integer;
  begin
  nn:=1;
  s:=s+' ';
  1:
  n:=PoseX(ch, s, n+1);
  inc(nn);
    if n=lenght(s) then result:= nn-1 else doto 1;
  end;

function TForm.gname(s: string; ch:char='='): string;
  begin
  Result:=copy(s, 1, pos(ch, s) -1);
  end;

function TForm1.gval(s: string, ch: char=''): string
  begin
    Result:=copy(s, pos(ch, s) + 1, length(s));
  end;

function TForm1.getvelue(name:string; rt:string): string;
var i,n: integer;
  begin
    result:='';
    n:=paramscol(rt)
    for i:=1 to n do
      if(gname(getparam(rt, i))=name) then result:=gval(getparam(rt, i));
  end;

function TForm1.getparam(s:string; n:integer; ch: char=','): string;
var
i, a1, m, nn: integer;
A: string;
  begin
    if pos(ch, s) <> 0 then
      begin
      m:=1;
      A:='';
        for i:=1 to length(s) do
          begin
            if s[i] = ch then
              begin
              inc(m)
              continue;
              end
            else if m=n then
            A:=A+s[i]
            else if (m=n) and (s[i} = ch then
          break;
          end;
        Result:=A;
      end
    else
    begin
      if n = 1 then
      Result:=5
      else
      Result:='';
    end;
  end;

procedure TForm1.initmap;
var i,j: integer;
absx, absy: inetegr;
tempbmp: TBitmap;
s: string;
  begin
  mapdata:=TIniFile.Create(ExtractFilePath(application.ExeName)+'map.ini');
  mapsixe.X:=mapdata.ReadInteger('main','sizex', 1);
  mapsixe.Y:=mapdata.ReadInteger('main','sizey', 1);
  plane.Width:=mapsize.X*100;
  plane.Height:=mapsize.Y*50;
    for j:=0 to mapsize.Y-1 do begin
    s:=mapdata.ReadString('map', inttostr(j), 'error');
      for i:= mapsize.X-1 downto 0 do begin
      tempbmp:=TBitmap.Create;
      tempbmp.LoadFromFile('tiles\'+ getparam(s, i+1)+'.bmp');
      tempbmp.TransparentColor:=clWhite
      tempbmp.Transparent:=true;
      absx:=trunc((i*50+j*50)/50);
        if j*25-i*25+mapsize.Y*25-25 mod 10 = 5 then
        absy:=trunc((j*25-i*25+mapsize.Y*25-25)/50) else
        absy:=trunc((j*25-i*25+mapsize.Y*25-25)/50)-1;
        abstoreal[absx,absy].X:=i;
        abstoreal[absx,absy].X:=j;
        realtoabs[i,j].X:=absx;
        realtoabs[i,j].Y:=absy;
        tempbmp.Canvas.TextOut(40,25,inttostr(i)+','+intostr(j));
        plane.Canvas.Draw(i*50+j*50,j*25-i*25+mapsize.Y*25-25, tempbmp);
        tempbmp.Free;
      end;
    end;
  end;

procedure TForm1.planeMouseMove(Sender: TObject; Shift: TShiftState; X,y: integer);
var
I,J: integer;
dx, dy: real;
begin
case Odd(plane.Width) of
False:
  begin
  I:=(X div 100) * 2;
  end;
True:
  begin
  X:=x+30;
  I:=(X div 100) * 2 - 1;
  end;
end;
J:=Y div 50; J:=Y div 50; Cur.X:=I;
Cur.Y:=J; dx:=100 * (Frac(X / 100));
dY:=50 * (Frac(Y/50));
case mask.Canvas.Pixels[Trunc(dx), Trunc(dy)] of
clRed;
  begin
  Cur.X:=I-1;
  Cur.Y:=J-1;
  end;
clBlue;
  begin
  Cur.X:=I+1;
  Cur.Y:=J-1;
  end;
clGreen;
  begin
  Cur.X:=I-1;
  end;
clGreen;
  begin
  Cur.X:=I+1;
  end;
  end;
cursorX:=abstoreal[cur.X, cur.Y].X;
cursorY:=abstoreal[cur.X, cur.Y].Y;
Label1.Caption:=intostr(cursorX)+''+intostr(cursorY);
end


procedure TForm1.FormCreate(Sender: TObject);
begin
initmap
mask:=TBitmap.Create;
mask.LoadFromFile('mask.bmp');
end;

end.
Не могу понять, почему компилятор выдает ошибку, в разделе type отказывается Point: TPoint инициализировать. Может я что-то не добавил на форму? Делал всё по этому туториалу http://cybern.ru/znakomimsya-s-izometriej.html

Подскажите, нубу!
barhat вне форума Ответить с цитированием
Старый 08.01.2013, 09:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А, стесняюсь поинтересоваться, догадываться дислокацию ошибки нам конечно же?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.01.2013, 09:28   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Types в Uses. И в справке всегда указывается в каком юните тип находится
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.01.2013, 10:51   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

что касается конкретной ошибки насчёт mapsize
то вы банально точку с запятой забыли (выделил, где она должна быть):
Код:
  mapdata: TIniFile;
  mapsize: TPoint;
но там в коде ещё множество ошибок и опечаток..
Вы текст ручками набирали?!!!!

во-первых, можно было КОПИРОВАТЬ текст со странички!
во-вторых, там же внизу статьи ссылочка: Скачать исходник полученного простого изометрического движка

p.s. я бы Вам рекомендовал немножко Delphi изучить, написать несколько своих простых задач, а потом уже изучать чужие уроки.

Последний раз редактировалось Serge_Bliznykov; 08.01.2013 в 11:13.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.01.2013, 21:05   #5
barhat
Пользователь
 
Аватар для barhat
 
Регистрация: 02.02.2012
Сообщений: 19
По умолчанию

Спасибо за конструктивную критику. Скажу лишь, что это было уже раннее утро...уставший ум, банальные ошибки не замечает))

А так я прошёл пару десятков простых уроков и понял их в отдельности. Но вот так сложить в движок..

Вы скажите, как профессионал, что именно мне надо изучить? В универе мы прошли алгоритмы и численные методы, у меня туговато с этим конечно... но если долго, то получается.

По поводу кода, скопировал исходник, появилась ошибка

Код:
Application.MainFormOnTaskbar := True;
Пошукал в нете, оказалось, что версия Delphi 7 .. http://www.cyberforum.ru/delphi-netw...ead555615.html
Но не могу найти для 7 версии апгрейд патч! нашёл на рутрекере вот это http://rutracker.org/forum/viewtopic.php?t=3687604 Если это поставить сверху Eterprise то патч отработает? Или поделитесь если есть у кого.

Последний раз редактировалось barhat; 08.01.2013 в 21:16.
barhat вне форума Ответить с цитированием
Старый 08.01.2013, 21:15   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
Application.MainFormOnTaskbar := True;
просто удалите эту строчку!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.01.2013, 21:25   #7
barhat
Пользователь
 
Аватар для barhat
 
Регистрация: 02.02.2012
Сообщений: 19
По умолчанию

Ха! Как всё просто, Вы мой Гуру! а всёже патч бы не помешал..
barhat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из TPoint в TRect rainbow Общие вопросы Delphi 13 15.06.2012 15:20
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? ArchiCurtis Помощь студентам 2 07.04.2012 14:16
Массив типа tpoint(delphi) Человек Панда Помощь студентам 2 09.02.2011 17:47
Передача TPoint - TServerSocket, TClientSocket Nater Общие вопросы Delphi 8 08.09.2010 17:59
Динамический массив TPoint NSV Общие вопросы Delphi 5 26.02.2010 18:14