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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.05.2011, 15:22
Reedberg Reedberg вне форума
Прохожий
 
Регистрация: 29.05.2011
Сообщения: 8
Репутация: 10
По умолчанию нарисовать точки по координатам

Программирую на Delphi 7.
Есть dat файл с координатами 10 точек в таком виде:

44 65
95 45
...

Их нужно нарисовать.

Как произвести перевод каретки на следующую строку? Я смог нарисовать первую точку по её координатам, для этого я создал на форме объект PaintBox и в методе OnPaint добавил следующий код:

Код:
var

f1:TStrings;
  f:TFileStream;
  buf: array[0..2] of char;
  ch:Integer;
  str:String;
  ch1:Integer;
  str1:String;
  i:integer;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
 f:=TFileStream.Create('c:\cities.dat', fmOpenReadWrite);
  f.Read(buf,2);
  str:=buf;
  ch:=StrToInt(str);
  f.Seek(1,SoFromCurrent);
  f.Read(buf,2);
  str1:=buf;
  ch1:=StrToInt(str);
  PaintBox1.Canvas.Pixels[ch,ch1]:= clBlack;
end;
Админ: Пользуемся тегами для оформления кода!

Таким образом рисуется первая точка, как перейти к следующей строке, прочитать её содержимое и нарисовать следующую точку?

Последний раз редактировалось Admin, 29.05.2011 в 18:02.
Ответить с цитированием
  #2  
Старый 29.05.2011, 22:23
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Может так:
Код:
var

f1:TStrings;
  f:TFileStream;
  buf: array[0..2] of char;
  ch,i:Integer;
  str:String;
  ch1:Integer;
  str1:String;
  i:integer;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
 f:=TFileStream.Create('c:\cities.dat', fmOpenReadWrite);
 For i:= 1 To 10 Do
 begin
  f.Read(buf,2);
  str:=buf;
  ch:=StrToInt(str);
  f.Seek(1,SoFromCurrent);
  f.Read(buf,2);
  str1:=buf;
  ch1:=StrToInt(str);
  PaintBox1.Canvas.Pixels[ch,ch1]:= clBlack;
end;
end;
__________________
If end Then begin;
Ответить с цитированием
  #3  
Старый 29.05.2011, 22:37
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Читай строку используя ReadLn, дальше парсируй на отдельные координаты. Читать можно так:
Код:
  while not Eof(F) do
     ReadLn(F, S);
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter