Chillout |
Отправлено: 12.12.2006, 17:37 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12
|
Здравствуйте! У меня возникла проблема: нужно данные из временного файла (.tmp) занести в переменную. С помощью какой функции можно это сделать? И еще вопросик, какое ограничение по длине у AnsiString?
Заранее спасибо! |
|
Konstantine |
Отправлено: 12.12.2006, 18:00 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
если файл бинарный — юзай FileOpen / FileRead / FileClose
если текстовый — то можно через TStringList
|
|
Chillout |
Отправлено: 12.12.2006, 18:41 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12
|
Файл бинарный. А есть ли примерчики с этими функциями?... |
|
Romikgy |
Отправлено: 12.12.2006, 19:45 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 72
|
QUOTE |
какое ограничение по длине у AnsiString?
|
имхо 4 гигабайта
QUOTE |
нужно данные из временного файла (.tmp) занести в переменную.
|
какая переменая?(тип какой) |
|
Chillout |
Отправлено: 12.12.2006, 20:59 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12
|
Думаю записывать в AnsiString.... Или не стоит...
Так есть у кого-нибудь примерчик на ReadFile? А то в нете чето ничего дельного нет... |
|
Romikgy |
Отправлено: 12.12.2006, 23:42 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 72
|
для двоичных файлов не стоит!
Отредактировано Romikgy — 12.12.2006, 22:43 |
|
Chillout |
Отправлено: 13.12.2006, 13:40 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12
|
Ок, а куда стоит?.. |
|
Grigoriy |
Отправлено: 13.12.2006, 13:47 |
|
Мастер участка
Группа: Участник
Сообщений: 381
|
Для чего вам необходим двоичный файл ?
|
|
Chillout |
Отправлено: 13.12.2006, 15:58 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12
|
Ситуация такая: моя прога разбирает почтовое сообщение на части. Вложения записываются во временные файлы (как я понимаю двоичные). Так вот, данные из этих временных файлов нужно записать в ячейку БД Access... |
|
Konstantine |
Отправлено: 13.12.2006, 17:18 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
а зачем тогда вообще временные файлы???
пусть разбирает и тут же и записует в Б.Д. через поток...
Привет использования функций (из стандартного хелпа)CODE | void __fastcall TForm1::Button1Click(TObject *Sender)
{
int iFileHandle;
int iFileLength;
int iBytesRead;
char *pszBuffer;
if (OpenDialog1->Execute())
{
try
{
iFileHandle = FileOpen(OpenDialog1->FileName, fmOpenRead);
iFileLength = FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
pszBuffer = newchar[iFileLength+1];
iBytesRead = FileRead(iFileHandle, pszBuffer, iFileLength);
FileClose(iFileHandle);
for (int i=0;i<iBytesRead;i++)
{
StringGrid1->RowCount += 1;
StringGrid1->Cells[1][i+1] = pszBuffer[i];
StringGrid1->Cells[2][i+1] = IntToStr((int)pszBuffer[i]);
}
delete [] pszBuffer;
}
catch(...)
{
Application->MessageBox("Can't perform one of the following file operations: Open, Seek, Read, Close.", "File Error", IDOK);
}
}
} |
|
|
Chillout |
Отправлено: 13.12.2006, 19:19 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12
|
Я разбираю сообщения стандатными компонентами (IdMessage), а компонент записывает найденные вложения во временные файлы. Ну а применять дополнительные вариации неохота... Вот я и хочу считывать данные сразу из этих временных файлов. |
|
AVC |
Отправлено: 14.12.2006, 09:07 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE |
Вложения записываются во временные файлы (как я понимаю двоичные). Так вот, данные из этих временных файлов нужно записать в ячейку БД Access.
...
Вот я и хочу считывать данные сразу из этих временных файлов.
|
CODE |
->Edit();
TADOBlobStream
TBlobField->LoadFromFile(...);
->Post();
|
Конкретно для Access'a не пробовал, но не вижу причин почему бы не получилось. |
|
Chillout |
Отправлено: 18.12.2006, 10:26 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12
|
Через TADOBlobStream че то не пошло... Решил сделать через функции CreateFile и ReadFile. Все бы хорошо, только вместо нормальных символов записаваются их десятичные коды! Кто-нибудь знает как получить нормальные символы? |
|