Главная страница
    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.041 c
9-1094386495
Darthman
2004-09-05 16:14
2005.01.09
Народ помогите с тестированием альфы плиз...


8-1096868803
sashuly
2004-10-04 09:46
2005.01.09
Рисование на TPaintBox


3-1102614287
oxigen
2004-12-09 20:44
2005.01.09
Как выполнить скрипт IB


4-1101283739
Sav1977
2004-11-24 11:08
2005.01.09
Windows


3-1102488885
AHTOH
2004-12-08 09:54
2005.01.09
Чайницкий вопрос про отображение и редактирование записей в IBX





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский