Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Вниз

Конвертация   Найти похожие ветки 

 
Кирилл ©   (2004-12-23 14:34) [0]

Простите что суюсь сюда с такими пустяками, стыдно конечно, но я уже потерял надежду. Мне нужно конвертировать файл *.obj в текстовый файл, в котором данные идут в следующем порядке:

Описание вершин
Описание текстурных координат
Описание нормалей


Вот мой код:

Const
Objects=1000;

...

OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Button1: TButton;
Label1: TLabel;

...

procedure TForm1.Button1Click(Sender: TObject);
Var
Ind, Ind2: Integer;
Number, n, n2, n3, n4, i, stage: Integer;
SObj: array[0..Objects-1] of string;
List1: TMemo;
File1, File2: textfile;
ListV, ListT, ListN, ListF, List2: array[0..Objects-1] of TMemo;
s, s2, s4: string;
s3: Char;
SObjects: string;
numV, numT, numN: Integer;
begin
{$HINTS OFF}
Number:=0;
n:=0;
n2:=0;
n3:=0;
n4:=0;
i:=0;
stage:=0;
Ind:=0;
Ind2:=0;
s:="";
s2:="";
s3:=Chr(0);
s4:="";
SObjects:="";
NumV:=0;
NumN:=0;
NumT:=0;
List1:=TMemo.CreateParented(Form1.Handle);
For Ind:=0 to objects-1 do begin
ListV[Ind]:=TMemo.CreateParented(Form1.Handle);
ListT[Ind]:=TMemo.CreateParented(Form1.Handle);
ListN[Ind]:=TMemo.CreateParented(Form1.Handle);
ListF[Ind]:=TMemo.CreateParented(Form1.Handle);
List2[Ind]:=TMemo.CreateParented(Form1.Handle);
end;
OpenDialog1.Execute;
SaveDialog1.Execute;
AssignFile(File1, OpenDialog1.FileName);
Reset(File1);
While not eof(file1) do begin
  ReadLn(File1, s);
  If Copy(S, 0, 1)="g" then begin
     Number:=Number+1;
     SObj[Number-1]:=Copy(s, 2, length(s)-2);
  end;
  If Copy(S, 0, 1)="v" then begin
     s2:=Copy(s, 2, length(s)-2);
     ListV[Number-1].Lines.Add(s2);
  end;
  If Copy(S, 0, 2)="vt" then begin
     s2:=Copy(s, 3, length(s)-3);
     ListT[Number-1].Lines.Add(s2);
  end;
  If Copy(S, 0, 2)="vn" then begin
     s2:=Copy(s, 3, length(s)-3);
     ListN[Number-1].Lines.Add(s2);
  end;
  If Copy(S, 0, 1)="f" then begin
     s2:=Copy(s, 2, length(s)-2);
     ListF[Number-1].Lines.Add(s2);
  end;
end;
While n<=Number-1 do begin
  While n2<=ListF[n].Lines.Count-1 do begin
     s2:=ListF[n].Lines[n2];
     n3:=length(s2);
        While n4+1<=n3 do begin
        s3:=s2[n4+1];
        Case s3 of
           "0".."9": s4:=s4+s3;
           "/": begin
                stage:=stage+1;
                If stage=3 then stage:=0;
                i:=StrToInt(s4);
                Case stage of
                   0: begin
                      s2:=ListV[n].Lines[i-NumV];
                      List2[n].Lines.Add(s2);
                      end;
                   1: begin
                      s2:=ListT[n].Lines[i-NumT];
                      List2[n].Lines.Add(s2);
                      end;
                   2: begin
                      s2:=ListN[n].Lines[i-NumN];
                      List2[n].Lines.Add(s2);
                      stage:=0;
                      end;
                end;
                end;
           " ", #13: s4:="";
        end;
        stage:=0;
        n4:=n4+1;
        end;
     n4:=0;
     n2:=n2+1;
  end;
n2:=0;
NumV:=NumV+ListV[n].Lines.Count-1;
NumT:=NumT+ListT[n].Lines.Count-1;
NumN:=NumN+ListN[n].Lines.Count-1;
n:=n+1;
Sobjects:=SObjects+Sobj[n]+"   "+IntToStr(ListF[n].Lines.Count*3)+" точек"+#13;
end;
For Ind:=0 to Number-1 do begin
  For Ind2:=0 to List2[Ind].Lines.Count-1 do begin
  List1.Lines.Add(List2[ind].Lines[Ind2]);
  end;
end;
CloseFile(File1);
AssignFile(File2, SaveDialog1.FileName);
Rewrite(File2);
For Ind:=0 to List1.Lines.Count-1 do begin
  s:=List1.Lines[Ind];
  WriteLn(File2, s);
end;
CloseFile(File2);
Label1.Caption:=SObjects;
List1:=nil;
List1.Destroy;
For Ind:=0 to objects-1 do begin
ListV[Ind]:=nil;
ListT[Ind]:=nil;
ListN[Ind]:=nil;
ListF[Ind]:=nil;
List2[Ind]:=nil;
ListV[Ind].Destroy;
ListT[Ind].Destroy;
ListN[Ind].Destroy;
ListF[Ind].Destroy;
List2[Ind].Destroy;  
end;
end;


Что я делаю не так?


 
Кирилл ©   (2004-12-23 14:41) [1]

Эта ветка попала случайно, т.к. форум очень плохо грузится



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.034 c
9-1095658408
Cobalt
2004-09-20 09:33
2005.01.09
Переключение между программами


6-1098110070
L.evil
2004-10-18 18:34
2005.01.09
Локальная сеть


6-1098421063
Grundic
2004-10-22 08:57
2005.01.09
простейший пинг - как?


1-1103741607
Guitar
2004-12-22 21:53
2005.01.09
Как запретить Form2.Create, после Form1.Create?


1-1103615792
Igor_thief
2004-12-21 10:56
2005.01.09
IXMLNode





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский