Dmitri |
Отправлено: 02.01.2004, 18:08 |
|
admin@localhost
Группа: Модератор
Сообщений: 110
|
Help! Почему не работает следующий код (мне надо считать число с плавающей точкой из файла и занести его в Edit1->Text):
CODE |
FILE *in;
in=fopen("q.dat","r+");
Edit->Text.SetLength(4);
fscanf(in,"%s", Edit1->Text.c_str()); |
|
|
fellow |
Отправлено: 02.01.2004, 18:27 |
|
Не зарегистрирован
|
Потому что Edit1->Text.c_str() может быть указателем как на константную С-строку, так и вообще на временный участок памяти. В хелпе ясно сказано, что c_str() предназначен для чтения содержимого AnsiString.
В духе Вашего кода более правильно было бы определить временный буфер, считать в него строку, затем передать её в Edit1->Text. |
|
Admin |
Отправлено: 02.01.2004, 18:30 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
CODE |
FILE *in;
in=fopen("q.dat","r+");
double d;
fscanf(in, "%le", &d);
Edit1->Text = d;
fclose(in);
|
или
CODE |
FILE *in;
in=fopen("q.dat","r+");
char s[100];
fscanf(in, "%s", s);
Edit1->Text = s;
fclose(in);
|
|
|
Dmitri |
Отправлено: 03.01.2004, 12:19 |
|
admin@localhost
Группа: Модератор
Сообщений: 110
|
QUOTE (fellow @ 02/01/2004, 21:29) | Потому что Edit1->Text.c_str() может быть указателем как на константную С-строку, так и вообще на временный участок памяти. В хелпе ясно сказано, что c_str() предназначен для чтения содержимого AnsiString.
В духе Вашего кода более правильно было бы определить временный буфер, считать в него строку, затем передать её в Edit1->Text. |
Можно поконкретнее? Т.е., понятно, что через буфер char buf[1024] можно загнать одну переменную. А если у меня Edit1, Edit2 и Edit3, при этом это не все содержимое файла, т.е. while(!eof()) не сработает?.. Тогда как считывать?
Отредактировано Dmitri — 03/01/2004, 15:22
|
|
fellow |
Отправлено: 03.01.2004, 12:43 |
|
Не зарегистрирован
|
Посмотрите на постинг Admin'а, это то, что Вам и нужно. |
|
Dmitri |
Отправлено: 03.01.2004, 16:22 |
|
admin@localhost
Группа: Модератор
Сообщений: 110
|
Это неинтересно И для 3 (преположим) Edit'ов надо выделять три переменные, а так — 1 буффер.
|
|
fellow |
Отправлено: 03.01.2004, 16:36 |
|
Не зарегистрирован
|
Да зачем три? Один выделили и хватит. Всё делаете через него. |
|