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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2012, 12:35   #11
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

писец и че ты раньше этого не дал?
public float[] xZone; - это массив!!!

iNumPrecinct - я не вижу тут

весь код выкладывай
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 03.12.2012, 13:09   #12
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

Вот то что сейчас написано
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sButton, sGroupBox, sListBox, sEdit, sDialogs, sSkinManager,
  sLabel, ComCtrls, acProgressBar, Menus;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sOpenDialog1: TsOpenDialog;
    sSaveDialog1: TsSaveDialog;
    sEdit1: TsEdit;
    sEdit2: TsEdit;
    sListBox1: TsListBox;
    sGroupBox1: TsGroupBox;
    sEdit3: TsEdit;
    sEdit4: TsEdit;
    sGroupBox2: TsGroupBox;
    sEdit5: TsEdit;
    sEdit6: TsEdit;
    sEdit7: TsEdit;
    sGroupBox3: TsGroupBox;
    sListBox2: TsListBox;
    sEdit8: TsEdit;
    sEdit9: TsEdit;
    sEdit10: TsEdit;
    sButton1: TsButton;
    sButton2: TsButton;
    sButton3: TsButton;
    sButton4: TsButton;
    sButton5: TsButton;
    sProgressBar1: TsProgressBar;
    sLabel3: TsLabel;
    sLabel4: TsLabel;
    sLabel2: TsLabel;
    sLabel5: TsLabel;
    sLabel1: TsLabel;
    sLabel6: TsLabel;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    sLabel7: TsLabel;
    sLabel8: TsLabel;
    sLabel9: TsLabel;
    sLabel10: TsLabel;
    sLabel11: TsLabel;
    sLabel12: TsLabel;
    sLabel13: TsLabel;
    sLabel14: TsLabel;
    sLabel15: TsLabel;
    sLabel16: TsLabel;
    Label1: TLabel;
    procedure N2Click(Sender: TObject);
    procedure sListBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  type
   TPrecinct=packed record    // Структурный массив
   iNumPrecinct: integer;
   countZone : integer;
   unk1 : integer;
   tagin : integer;
   tagout : integer;
   unk2  : integer;
   x    : single;
    y   : single;
    z   : single;
    xZone : single;
    yZone :single;
    zZone : single;
   end;

   THeader=packed record
    ver:byte;
    dummy:array[1..3] of byte;
    Count:word;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.N2Click(Sender: TObject);
var
S: TFileStream;
v: Byte;
i: integer;
st:string;
r : array of byte;
Head: THeader;
q : array of TPrecinct;
Begin
if sOpenDialog1.Execute then    //Открываем файл
S:= TFileStream.Create(sOpenDialog1.FileName, fmOpenRead);   //Создание потока
  S.Position := 4;    //Вывод колличество точек
  S.Read(i, 2);
  S.Position := 0;    //Вывод версии файла
  S.Read(v, 1);

  SetLength(r,S.Size);  //Изменяем размер строки
  S.Write(r[0], S.Size); // Запись из потока в массив

   try
    s.ReadBuffer(Head,SizeOf(Head));
    SetLength(q,Head.Count);
    for i:=0 to Head.Count-1 do
    begin
      s.ReadBuffer(q[i],SizeOf(TPrecinct));          //Запись в буфер из потока
    end;
  finally

  S.Free;          //Закрытие потока
  sLabel4.Caption := IntToStr(i);  //Вывод версии файла
  sLabel1.Caption := IntToStr(v);  //Вывод колличество точек

  for i := 1 to 1 do  sprogressbar1.Position:=Round(100*i/1); //Прогресс бар
slabel2.Caption:=sopendialog1.FileName;                 //Вывод пути загрузки

    sListBox1.Items.Clear;
  for i:=0 to Length(q)-1 do
  begin
    sListBox1.Items.Add(IntToStr(q[i].iNumPrecinct))
  end;

   end;
End;

procedure TForm1.sListBox1Click(Sender: TObject);
var
q : array of TPrecinct;
i: integer;
            begin
              sEdit1.Text:=inttostr(q[i].unk1);
              sEdit2.Text:=inttostr(q[i].unk2);
              sEdit3.Text:=inttostr(q[i].tagin);
              sEdit4.Text:=inttostr(q[i].tagout);
              sEdit5.Text:=floattostr(q[i].x);
              sEdit6.Text:=floattostr(q[i].y);
              sEdit7.Text:=floattostr(q[i].z);
              sListBox2.Items.Add(IntToStr(q[i].countZone));
              sEdit5.Text:=floattostr(q[i].xZone);
              sEdit6.Text:=floattostr(q[i].yZone);
              sEdit7.Text:=floattostr(q[i].zZone);
            end;

end.
а iNumPrecinct находится в заголовке

Код:
type = class PRECINCTFILEHEADER {
public:
unsigned int dwVersion;
int iNumPrecinct;

Последний раз редактировалось nefakt; 03.12.2012 в 13:12.
nefakt вне форума Ответить с цитированием
Старый 03.12.2012, 13:23   #13
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

все сошлось... скоро выложу
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 03.12.2012, 13:47   #14
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Код:
type
  TPRECINCTFILEHEADER5 =packed record
    dwVersion:integer;
    iNumPrecinct:integer;
    dwTimeStamp:integer;
  end;

  TPrecinctStatic=packed record
    countZone : integer;
    unk1 : integer;
    tagin, tagout : integer;
    unk2  : integer;
    x,y,z: single;
  end;
  TSingleArray=array of single;
  TPrecinct=record
    Static:TPrecinctStatic;
    xZone, yZone, zZone:TSingleArray;
  end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i,j: integer;
  S: TFileStream;
  Head: TPRECINCTFILEHEADER5;
  r : array of TPrecinct;
  Zone:TSingleArray;
Begin
  if not OpenDialog1.Execute then exit;
  Caption:=OpenDialog1.FileName;
  S:= TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
  try
    s.ReadBuffer(Head,SizeOf(Head));
    Label1.Caption := 'Версия:'+IntToStr(Head.dwVersion);
    Label2.Caption := 'Точек:'+IntToStr(Head.iNumPrecinct);
    Label3.Caption := 'TimeStamp:'+IntToStr(Head.dwTimeStamp);

    SetLength(r,Head.iNumPrecinct);
    for i:=0 to Head.iNumPrecinct-1 do
    with r[i] do
    begin
      s.ReadBuffer(Static,SizeOf(Static));
      SetLength(Zone,Static.countZone);
      for j:=Low(Zone) to High(Zone) do
        s.ReadBuffer(Zone[j],SizeOf(single));
      xZone:=Zone;
      for j:=Low(Zone) to High(Zone) do
        s.ReadBuffer(Zone[j],SizeOf(single));
      yZone:=Zone;
      for j:=Low(Zone) to High(Zone) do
        s.ReadBuffer(Zone[j],SizeOf(single));
      zZone:=Zone;
    end;
  finally
    S.Free;
  end;

  Memo1.Lines.BeginUpdate;
  try
    Memo1.Lines.Clear;
    for i:=0 to Length(r)-1 do
    with r[i] do
    begin
      with Static do
      Memo1.Lines.add(
        format('<Precinct countZone="%d" unk1="%d" tagin="%d" tagout="%d" unk2="%d" x="%f" y="%f" z="%f">',
          [countZone, unk1, tagin,tagout,unk2,x,y,z]));
      for j:=Low(xZone) to High(xZone) do
        Memo1.Lines.add(format('  <Zone x="%f" y="%f" z="%f" />',[xZone[j],yZone[j],zZone[j]]));
      Memo1.Lines.add('</Precinct>')
    end;
  finally
    Memo1.Lines.EndUpdate;
  end;
end;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 03.12.2012, 13:56   #15
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

Спасибо сейчас попробую.
nefakt вне форума Ответить с цитированием
Старый 03.12.2012, 14:10   #16
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

Вот у меня только вопрос тут как ты написал выводится сразу в memo ну я на LIstBOx поменял только он должен выводить не как ты написал а по клику в ListBox в право в Edit параметры а не так что он просто кучей в memo или listbox выводит как можно тогда разделить что бы он по клику в listBox эти параметры в Edit выводил?!
nefakt вне форума Ответить с цитированием
Старый 03.12.2012, 15:18   #17
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Ридонли готово...
Редактирование только сам...
Сохранение попробуй сам по аналогии с чтением...
Вложения
Тип файла: zip precinct.zip (43.1 Кб, 9 просмотров)
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 03.12.2012, 15:47   #18
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

Ох спасибо тебе большое я бы поставил "Спасибо" но мне надо кому то другому сначала поставить прежде чем тебе. Если что поставлю как возможность появиться.
nefakt вне форума Ответить с цитированием
Старый 03.12.2012, 17:37   #19
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

И ещё последний вопрос как вывести в edit данные из второго listbox`а там где координаты x, y, z выводится что бы можно было изменять нужно что бы он выводил в edit1(x) в edit2(y) и в edit3(z) что бы можно было изменять координаты, пробовал сам двумя способами и при открытии файла ошибку выдавало.
1-й способ который я пробовал вот
Код:
procedure TForm1.ListBox1Click(Sender: TObject);
var j:integer;
begin
  if ListBox1.SelCount=0 then exit;
  with r[ListBox1.ItemIndex] do
  begin
    LabeledEdit1.Text:=IntToStr(Static.xZone);
    LabeledEdit2.Text:=IntToStr(Static.yZone);
    LabeledEdit3.Text:=IntToStr(Static.яZone);
И второй способ такой
Код:
procedure TForm1.ListBox1Click(Sender: TObject);
var j:integer;
begin
  if ListBox1.SelCount=0 then exit;
  with r[ListBox1.ItemIndex] do
  begin
    LabeledEdit1.Text:=IntToStr(r[j].xZone);
    LabeledEdit2.Text:=IntToStr(r[j].yZone);
    LabeledEdit3.Text:=IntToStr(r[j].zZone);
И ещё как сделать что бы координаты выводились не так как сейчас 342.2359846 а так 342.236 ?
nefakt вне форума Ответить с цитированием
Старый 04.12.2012, 05:44   #20
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Дальше давай сам
Вложения
Тип файла: zip precinct.zip (43.3 Кб, 10 просмотров)
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
загрузка из ListBox в StringGrid waka2ebawer Общие вопросы Delphi 2 21.08.2012 22:07
Загрузка в ListBox и интегрированный WMP Elementery Компоненты Delphi 25 10.06.2010 19:58
Загрузка file.txt в ListBox Shift-stels Общие вопросы C/C++ 1 29.04.2010 21:59
Загрузка списка в ListBox aval Microsoft Office Excel 4 09.06.2009 11:14
Загрузка списка в ListBox reyn90 Помощь студентам 2 31.05.2009 04:17