Also das sieht fast schlimmer aus als mein Skriploader
Erstmal ein paar prinzipelle Sachen. Arrays werden einmal allociert und nach gebrauch gelöscht. Dabei kann die größe nicht mehr verändert werden.
2. sollte man beim solchen Sachen das KISS System beachten. Ich persönlich würde das so machen:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
tbVector3 *pallVectores = NULL;
for(int iVCounter = 0; !CInFile.eof(); iVCounter++)// man kann auch leere Dateien erwischen / das mit dem for ist Geschmackssache
{
char cBuffer[8];//Vars immer in dem kleinsten Gültikeitsbereich
tbVector3 TempV;
CInFile.getline(cBuffer, 8, ' ');
if(cBuffer) TempV.x = atof(cBuffer);//ein wenig Sicherheit sonst gibt es böse fehler
CInFile.getline(cBuffer, 8, ' ');
if(cBuffer) TempV.y = atof(cBuffer);
CInFile.getline(cBuffer, 8, '\n');
if(cBuffer) TempV.z = atof(cBuffer);
//den Teil kann man durch eine Liste ersetzten
tbVector3* ptempVector = new(tbVector3[iVCounter + 1]);//nun den Umgehungsspeicher allocieren
memcpy(ptempVector, pallVectores, iVCounter * sizeof(tbVector3));
delete[] pallVectores;
ptempVector[iVCounter] = TempV;//geht hier natürlich auch mit memcpy
pallVectores = ptempVector;
}
|
Ist natürlich niemals eine Ideallösung und stark geschmacksabhängig, auch habe ich sie jetzt nicht getestet, aber sie sollte einigermaßen funktionieren.
Wir sind ja alle in einem stetigen Lernprozess und lernen daher nie aus