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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2012, 11:02   #1
Katus
Форумчанин
 
Регистрация: 30.11.2011
Сообщений: 161
По умолчанию Модули - ';' expected but '.' found.

Написал модуль... При компиляции выдает ошибку.. проверил Begin-End, Repeat-Until... Вродк все на месте... Структура модуля тоже вроде как правильная.... Подскажите пожалуйста где ошибка

Код:
unit Unit2;

interface

uses
  SysUtils,Graphics;

type
  TMap = record
		area: record
			size: record
				height, width: integer;
			end;
			pos: record
				left, top: integer;
			end;
		end;
		way: record
			start: record
				pos: record
					left, top: integer;
				end;
				size: record
					height, width: integer;
				end;
				color: tcolor;
			end;
			finish: record
				pos: record
					left, top: integer;
				end;
				size: record
					height, width: integer;
				end;
				color: tcolor;
			end;
		end;
		write: array of record
			line: record
				start: record
					pos: record
						left, top: integer;
					end;
				end;
				finish: record
					pos: record
						left, top: integer;
					end;
				end;
				typeline: byte;
				width: integer;
			end;
		end;
		dinamic: array of record
			block: record
				start: record
					pos: record
						left, top: integer;
					end;
				end;
				finish: record
					pos: record
						left, top: integer;
					end;
				end;
				speed: integer;
			end;
		end;
		coursor: record
			start: record
				pos: record
					left, top: integer;
				end;
			end;
			color: tcolor;
		end;
		nwrite, ndblock: word;
	end;


implementation

const
  STRLENG = 20;

procedure MapReader(var f: text; Map: TMap);
procedure FNumReader(var f: text; num: integer; s: string);
procedure StringController(var s: string);
procedure StringRead(var f: text; c: char; s: string);
function FDelete(S: string; L: byte): string;


function FDelete(S: string; L: byte): string;
begin
Delete(S, L, Length(S)-L);
result:=S;
end;

procedure StringController(var s: string);
begin
if Length(s)>STRLENG then
	Delete(s, 1, 1);
end;
Если лень что-то делать, заставь это делать машину ... =,
Katus вне форума Ответить с цитированием
Старый 02.04.2012, 11:03   #2
Katus
Форумчанин
 
Регистрация: 30.11.2011
Сообщений: 161
По умолчанию

Код:
procedure FNumReader(var f: text; num: integer; s: string);
var
	c: char;
begin
num:=0;
repeat
read(f, c);
stringcontroller(s);
s:=s+c;
if (s[1]>'0')and(s[1]<'9') then
	num:=num*10+StrToInt(s[1]);
until EOF(f) or (s[1]=#13) or (s[1]=#10);
end;

procedure StringRead(var f: text; c: char; s: string);
begin
read(f, c);
stringcontroller(s);
s:=s+c;
end;

procedure MapReader(var f: text; Map: TMap);
var
	c: char;
	findstring: string;
	num: word;
begin
Num:=0;
repeat
read(f, c);
stringcontroller(findstring);
findstring:=findstring+c;
if FDelete(findstring, 4)='area' then
	repeat
	StringRead(f, c, findstring);
	if FDelete(findstring, 4)='size' then
		repeat
		StringRead(f, c, findstring);
		if FDelete(findstring, 7)='width =' then
			FNumReader(f, Map.Area.Size.Width, findstring)
		else if FDelete(findstring, 8)='height =' then
			FNumReader(f, Map.Area.Size.Height, findstring);
		until EOF(f) or (FDelete(findstring, 3)='end')
	else if FDelete(findstring, 3)='pos' then
		repeat
		StringRead(f, c, findstring);
		if FDelete(findstring, 5)='top =' then
			FNumReader(f, Map.Area.Pos.Top, findstring)
		else if FDelete(findstring, 6)='left =' then
			FNumReader(f, Map.Area.Pos.Left, findstring);
		until EOF(f) or (FDelete(findstring, 3)='end');
	until EOF(f) or (FDelete(findstring, 3)='end')
else if FDelete(findstring, 3)='way' then
	repeat
	StringRead(f, c, findstring);
	if FDelete(findstring, 5)='start' then
		repeat
		StringRead(f, c, findstring);
		if FDelete(findstring, 3)='pos' then
			repeat
			StringRead(f, c, findstring);
			if FDelete(findstring, 5)='top =' then
				FNumReader(f, Map.Way.Start.Pos.Top, findstring)
			else if FDelete(findstring, 6)='left =' then
				FNumReader(f, Map.Way.Start.Pos.Left, findstring);
			until EOF(f) or (FDelete(findstring, 3)='end')
		else if FDelete(findstring, 4)='size' then
			repeat
			StringRead(f, c, findstring);
			if FDelete(findstring, 8)='height =' then
				FNumReader(f, Map.Way.Start.Size.Height, findstring)
			else if FDelete(findstring, 7)='width =' then
				FNumReader(f, Map.Way.Start.Size.Width, findstring);
			until EOF(f) or (FDelete(findstring, 3)='end')
		else if FDelete(findstring, 7)='color =' then
			FNumReader(f, Map.Way.Start.Color, findstring);
		until EOF(f) or (FDelete(findstring, 3)='end')
	else if FDelete(findstring, 6)='finish' then
		repeat
		StringRead(f, c, findstring);
		if FDelete(findstring, 3)='pos' then
			repeat
			StringRead(f, c, findstring);
			if FDelete(findstring, 5)='top =' then
				FNumReader(f, Map.Way.Finish.Pos.Top, findstring)
			else if FDelete(findstring, 6)='left =' then
				FNumReader(f, Map.Way.Finish.Pos.Left, findstring);
			until EOF(f) or (FDelete(findstring, 3)='end')
		else if FDelete(findstring, 4)='size' then
			repeat
			StringRead(f, c, findstring);
			if FDelete(findstring, 8)='height =' then
				FNumReader(f, Map.Way.Finish.Size.Height, findstring)
			else if FDelete(findstring, 7)='width =' then
				FNumReader(f, Map.Way.Finish.Size.Width, findstring);
			until EOF(f) or (FDelete(findstring, 3)='end')
		else if FDelete(findstring, 7)='color =' then
			FNumReader(f, Map.Way.Finish.Color, findstring);
		until EOF(f) or (FDelete(findstring, 3)='end');
  until EOF(f) or (FDelete(findstring, 3)='end')
else if FDelete(findstring, 7)='write =' then begin
	FNumReader(f, Map.NWrite, findstring);
	SetLength(Map.Write, Map.NWrite);
	repeat
	StringRead(f, c, findstring);
	with Map.Write[Num] do
		if FDelete(findstring, 4)='line' then
			repeat
			StringRead(f, c, findstring);
			if FDelete(findstring, 5)='start' then
				repeat
				StringRead(f, c, findstring);
				if FDelete(findstring, 3)='pos' then
					repeat
					StringRead(f, c, findstring);
					if FDelete(findstring, 5)='top =' then
						FNumReader(f, Line.Start.Pos.Top, findstring)
					else if FDelete(findstring, 6)='left =' then
						FNumReader(f, Line.Start.Pos.Left, findstring);
					until EOF(f) or (FDelete(findstring, 3)='end');
				until EOF(f) or (FDelete(findstring, 3)='end')
			else if FDelete(findstring, 6)='finish' then
Если лень что-то делать, заставь это делать машину ... =,
Katus вне форума Ответить с цитированием
Старый 02.04.2012, 11:03   #3
Katus
Форумчанин
 
Регистрация: 30.11.2011
Сообщений: 161
По умолчанию

Код:
				repeat
				StringRead(f, c, findstring);
				if FDelete(findstring, 3)='pos' then
					repeat
					StringRead(f, c, findstring);
					if FDelete(findstring, 5)='top =' then
						FNumReader(f, Line.Finish.Pos.Top, findstring)
					else if FDelete(findstring, 6)='left =' then
						FNumReader(f, Line.Finish.Pos.Left, findstring);
					until EOF(f) or (FDelete(findstring, 3)='end');
				until EOF(f) or (FDelete(findstring, 3)='end')
			else if FDelete(findstring, 6)='type =' then
				FNumReader(f, Line.TypeLine, findstring)
			else if FDelete(findstring, 7)='width =' then
				FNumReader(f, Line.Width, findstring);
			until EOF(f) or (FDelete(findstring, 3)='end');
	until EOF(f) or (FDelete(findstring, 3)='end');
  Num:=Num+1;
	end
else if FDelete(findstring, 9)='dinamic =' then begin
	Num:=0;
	FNumReader(f, Map.NDBlock, findstring);
	repeat
	StringRead(f, c, findstring);
	with Map.Dinamic[Num] do
		if FDelete(findstring, 5)='block' then
			repeat
			StringRead(f, c, findstring);
			if FDelete(findstring, 5)='start' then
				repeat
				StringRead(f, c, findstring);
				if FDelete(findstring, 3)='pos' then
					repeat
					StringRead(f, c, findstring);
					if FDelete(findstring, 5)='top =' then
						FNumReader(f, Block.Start.Pos.Top, findstring)
					else if FDelete(findstring, 6)='left =' then
						FNumReader(f, Block.Start.Pos.Left, findstring);
					until EOF(f) or (FDelete(findstring, 3)='end');
				until EOF(f) or (FDelete(findstring, 3)='end')
			else if FDelete(findstring, 6)='finish' then
				repeat
				StringRead(f, c, findstring);
				if FDelete(findstring, 3)='pos' then
					repeat
					StringRead(f, c, findstring);
					if FDelete(findstring, 5)='top =' then
						FNumReader(f, Block.Finish.Pos.Top, findstring)
					else if FDelete(findstring, 6)='left =' then
						FNumReader(f, Block.Finish.Pos.Left, findstring);
					until EOF(f) or (FDelete(findstring, 3)='end');
				until EOF(f) or (FDelete(findstring, 3)='end')
			else if FDelete(findstring, 7)='speed =' then
				FNumReader(f, Block.Speed, findstring);
			until EOF(f) or (FDelete(findstring, 3)='end');
	until EOF(f) or (FDelete(findstring, 3)='end');
  Num:=Num+1;
  end
else if FDelete(findstring, 7)='coursor' then
	repeat
	StringRead(f, c, findstring);
	if FDelete(findstring, 5)='start' then
		repeat
		StringRead(f, c, findstring);
		if FDelete(findstring, 3)='pos' then
			repeat
			StringRead(f, c, findstring);
			if FDelete(findstring, 5)='top =' then
				FNumReader(f, Map.Coursor.Start.Pos.Top, findstring)
			else if FDelete(findstring, 6)='left =' then
				FNumReader(f, Map.Coursor.Start.Pos.Left, findstring);
			until EOF(f) or (FDelete(findstring, 3)='end');
		until EOF(f) or (FDelete(findstring, 3)='end')
	else if FDelete(findstring, 7)='color =' then
		FNumReader(f, Map.Coursor.Color, findstring);
	until EOF(f) or (FDelete(findstring, 3)='end');
until EOF(f) or (FDelete(findstring, 3)='end');
end;



begin

end.
Если лень что-то делать, заставь это делать машину ... =,
Katus вне форума Ответить с цитированием
Старый 02.04.2012, 11:06   #4
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Закинте все это дело в xml и не мучайтесь.
=master= вне форума Ответить с цитированием
Старый 02.04.2012, 11:09   #5
Katus
Форумчанин
 
Регистрация: 30.11.2011
Сообщений: 161
По умолчанию зачем -_-

зачем ??? -_-
Если лень что-то делать, заставь это делать машину ... =,
Katus вне форума Ответить с цитированием
Старый 02.04.2012, 11:17   #6
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Чтобы не мучаться.
Ваша структура без роблем войдет в xml.
Для xml создали кучу всяких библиотек, вам же придется только пользоватся, не изобретая велосипедов.
=master= вне форума Ответить с цитированием
Старый 02.04.2012, 12:18   #7
Katus
Форумчанин
 
Регистрация: 30.11.2011
Сообщений: 161
По умолчанию

я не умею работаль с XML
Если лень что-то делать, заставь это делать машину ... =,
Katus вне форума Ответить с цитированием
Старый 02.04.2012, 12:48   #8
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Еще раз, начнете работать с xml ваша гора кода превратится в 3-4 строки.
=master= вне форума Ответить с цитированием
Старый 02.04.2012, 14:56   #9
Katus
Форумчанин
 
Регистрация: 30.11.2011
Сообщений: 161
По умолчанию

Мне будет не удобно работать с ХML. Тем более я что зря старался7 -_-
Если лень что-то делать, заставь это делать машину ... =,
Katus вне форума Ответить с цитированием
Старый 02.04.2012, 14:58   #10
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Именно так.
=master= вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка Expected ':' but '=' found. в Delphi 7 vizavill Помощь студентам 2 27.10.2011 20:14
expected end but var found obsession Общие вопросы Delphi 7 10.05.2011 11:19
Declaration expected but 'INLINE' found zotox Общие вопросы Delphi 7 06.11.2009 15:47
expected END but : found qqanton Помощь студентам 2 31.10.2008 17:45
Expected an identifier but string found Maugli-rus Общие вопросы Delphi 3 23.12.2007 20:00