Hallo zusammen,
ich habe das Problem, dass ich viele Textdateien durchsuchen muss, um Daten auszulesen.
Es wird eine Liste von ca 100 Zeilen durchsucht. In jeder Zeile werden 10 Dateien geöffnet. Also ca 1000 Mal fopen() und fclose().
Wenn die Liste klein ist, gibt es keinen stackoverflow.
Hat jemand ein ähnliches Problem schon gehabt und eventuell eine Lösung dafür ?
Diese Funktion wird ca 1000 Mal aufgerufen:
BOOL UtilsCheckArtikelAufPenner(CString sFilePath,CString sLiefNrExt,CString sArtNrExt) /* Artikel = Penner ???******/
{ /****************************/
FILE *pFile;
CString sSourceFile;
char LineBuffer[256];
CString sLiefNr,sArtNr,sBestand;
int iLen;
double dBestand;
int iBestand;
pFile = fopen(sFilePath, "r");
if(! pFile)
return(FALSE);
pFile = fopen(sFilePath.GetBuffer(256), "r");
if(!pFile)
{
UtilsTextBox("B","DatenFile kann nicht geöffent werden","","");
return(FALSE);
}
while(fgets(LineBuffer, sizeof(LineBuffer), pFile) != NULL )
{
if(*LineBuffer == '#' || strlen(LineBuffer) < 5)
continue;
sLiefNr = UtilsExtractFirstString(LineBuffer,';');
if(sLiefNr != sLiefNrExt)
continue;
sArtNr = UtilsExtractTeilStringDelimiter (LineBuffer,';',1);
iLen = sArtNr.GetLength();
if(iLen > 0)
{
if((sArtNr != sArtNrExt) && (iLen > 0 ))
continue;
}
else
continue;
sBestand = UtilsExtractTeilStringDelimiter (LineBuffer,';',3);
dBestand = UtilsConvertCStringToDouble(sBestand);
iBestand = (int) dBestand;
break;
}
if(pFile)
fclose(pFile);
if(iBestand > 0)
return(TRUE);
else
return(FALSE);
}
ich habe das Problem, dass ich viele Textdateien durchsuchen muss, um Daten auszulesen.
Es wird eine Liste von ca 100 Zeilen durchsucht. In jeder Zeile werden 10 Dateien geöffnet. Also ca 1000 Mal fopen() und fclose().
Wenn die Liste klein ist, gibt es keinen stackoverflow.
Hat jemand ein ähnliches Problem schon gehabt und eventuell eine Lösung dafür ?
Diese Funktion wird ca 1000 Mal aufgerufen:
BOOL UtilsCheckArtikelAufPenner(CString sFilePath,CString sLiefNrExt,CString sArtNrExt) /* Artikel = Penner ???******/
{ /****************************/
FILE *pFile;
CString sSourceFile;
char LineBuffer[256];
CString sLiefNr,sArtNr,sBestand;
int iLen;
double dBestand;
int iBestand;
pFile = fopen(sFilePath, "r");
if(! pFile)
return(FALSE);
pFile = fopen(sFilePath.GetBuffer(256), "r");
if(!pFile)
{
UtilsTextBox("B","DatenFile kann nicht geöffent werden","","");
return(FALSE);
}
while(fgets(LineBuffer, sizeof(LineBuffer), pFile) != NULL )
{
if(*LineBuffer == '#' || strlen(LineBuffer) < 5)
continue;
sLiefNr = UtilsExtractFirstString(LineBuffer,';');
if(sLiefNr != sLiefNrExt)
continue;
sArtNr = UtilsExtractTeilStringDelimiter (LineBuffer,';',1);
iLen = sArtNr.GetLength();
if(iLen > 0)
{
if((sArtNr != sArtNrExt) && (iLen > 0 ))
continue;
}
else
continue;
sBestand = UtilsExtractTeilStringDelimiter (LineBuffer,';',3);
dBestand = UtilsConvertCStringToDouble(sBestand);
iBestand = (int) dBestand;
break;
}
if(pFile)
fclose(pFile);
if(iBestand > 0)
return(TRUE);
else
return(FALSE);
}
Comment