Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ввод файла с помощью цикла в Builder'e, работа с файлами 
:(
    Опции темы
AFenix85
Дата 5.5.2007, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 20.4.2007
Где: Россия,Иркутск

Репутация: нет
Всего: нет



Цитата(Weaver @  4.5.2007,  15:44 Найти цитируемый пост)
Ребята, извините, вот вы тут занимаетесь извратом, насколько я понял.


Ишь какой умный,а как это реализовать,если компилер постоянно ругается или прога работает но ничего невыдает smile 

Лучше бы написал че дельное!
PM MAIL   Вверх
AFenix85
Дата 5.5.2007, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 20.4.2007
Где: Россия,Иркутск

Репутация: нет
Всего: нет



Ребята,я впал в ступор,башка не варит! smile 

Напишите примеры как из Edit1->Text перейти к char smile 

 
PM MAIL   Вверх
Anikmar
Дата 5.5.2007, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(AFenix85 @  5.5.2007,  15:33 Найти цитируемый пост)
Напишите примеры как из Edit1->Text перейти к char

Уже отвечали.

Edit1->Text.c_str(); - вернет указатель на char*. (Константный)

Код

char Buf[200];
strcpy(Buf,Edit1->Text.c_str());


Естественно без контроля длины
PM MAIL ICQ   Вверх
AFenix85
Дата 5.5.2007, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 20.4.2007
Где: Россия,Иркутск

Репутация: нет
Всего: нет



Цитата(Anikmar @  5.5.2007,  15:50 Найти цитируемый пост)
Уже отвечали.


Так как компилер именно здесь ругается,снова и спрашиваю smile 


PM MAIL   Вверх
Klin
Дата 5.5.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Цитата(AFenix85 @  5.5.2007,  17:15 Найти цитируемый пост)
Так как компилер именно здесь ругается,снова и спрашиваю 

Матом? Или текст ошибки есть? smile


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
AFenix85
Дата 5.5.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 20.4.2007
Где: Россия,Иркутск

Репутация: нет
Всего: нет



Цитата(Klin @  5.5.2007,  16:23 Найти цитируемый пост)
Матом? Или текст ошибки есть?  


Говорит типа нельзя перейти "AnsiString" to "Char"

А если Char *s;strcpy(s,Edit1->Text.c_str());

То конечно работает,но уже strcmp(&s,"******"); ругается! smile   
PM MAIL   Вверх
Klin
Дата 5.5.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Цитата(AFenix85 @  5.5.2007,  17:41 Найти цитируемый пост)
А если Char *s;strcpy(s,Edit1->Text.c_str());

Так так и надо! Там оба параметра char*

Добавлено через 1 минуту и 8 секунд
Цитата(AFenix85 @  5.5.2007,  17:41 Найти цитируемый пост)
strcmp(&s,"******"); 

Зачем &s? просто s (оно же char*).


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Anikmar
Дата 5.5.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Память под строку не забудьте выделить.
Не просто 
char *s;

А что-то вроде
char s[100];

или что-то в этом духе.

PM MAIL ICQ   Вверх
AFenix85
Дата 6.5.2007, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 20.4.2007
Где: Россия,Иркутск

Репутация: нет
Всего: нет



не klin все равно выдает ошибку и ставит стрелку там где у меня в коде звездочки! smile 
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        try
        {
                 Application->Initialize();
                 Application->CreateForm(__classid(TForm1), &Form1);
                 Application->Run();
        }   ******
        catch (Exception &exception)


Вот весь мой код,может кто посмотрит и найдет ошибку smile 
Код

//---------------------------------------------------------------------------
#include<iostream.h>
#include<fstream.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#include<vcl.h>

#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button3Click(TObject *Sender)
{
double TM[1000];
int fn,i,j,c,k,n;
char ch[400],ss[56][7],*s;
AnsiString FN,FNO;
fn=StrToInt(Edit1->Text);
j=StrToInt(Edit2->Text);
s=Edit3->Text.c_str();
if(strcmp(s,"tm55")==0)n=1;
if(strcmp(s,"tm60")==0)n=2;
if(strcmp(s,"tm65")==0)n=3;
if(strcmp(s,"tm70")==0)n=4;
if(strcmp(s,"tm75")==0)n=5;
if(strcmp(s,"tm80")==0)n=6;
if(strcmp(s,"tm85")==0)n=7;
if(strcmp(s,"tm90")==0)n=8;
if(strcmp(s,"vx55")==0)n=9;
if(strcmp(s,"vx60")==0)n=10;
if(strcmp(s,"vx65")==0)n=11;
if(strcmp(s,"vx70")==0)n=12;
if(strcmp(s,"vx75")==0)n=13;
if(strcmp(s,"vx80")==0)n=14;
if(strcmp(s,"vx85")==0)n=15;
if(strcmp(s,"vx90")==0)n=16;
if(strcmp(s,"vy55")==0)n=17;
if(strcmp(s,"vy60")==0)n=18;
if(strcmp(s,"vy65")==0)n=19;
if(strcmp(s,"vy70")==0)n=20;
if(strcmp(s,"vy75")==0)n=21;
if(strcmp(s,"vy80")==0)n=22;
if(strcmp(s,"vy85")==0)n=23;
if(strcmp(s,"vy90")==0)n=24;
if(strcmp(s,"vz55")==0)n=25;
if(strcmp(s,"vz60")==0)n=26;
if(strcmp(s,"vz65")==0)n=27;
if(strcmp(s,"vz70")==0)n=28;
if(strcmp(s,"vz75")==0)n=29;
if(strcmp(s,"vz80")==0)n=30;
if(strcmp(s,"vz85")==0)n=31;
if(strcmp(s,"vz90")==0)n=32;
if(strcmp(s,"vh55")==0)n=33;
if(strcmp(s,"vh60")==0)n=34;
if(strcmp(s,"vh65")==0)n=35;
if(strcmp(s,"vh70")==0)n=36;
if(strcmp(s,"vh75")==0)n=37;
if(strcmp(s,"vh80")==0)n=38;
if(strcmp(s,"vh85")==0)n=39;
if(strcmp(s,"vh90")==0)n=40;
if(strcmp(s,"az55")==0)n=41;
if(strcmp(s,"az60")==0)n=42;
if(strcmp(s,"az65")==0)n=43;
if(strcmp(s,"az70")==0)n=44;
if(strcmp(s,"az75")==0)n=45;
if(strcmp(s,"az80")==0)n=46;
if(strcmp(s,"az85")==0)n=47;
if(strcmp(s,"az90")==0)n=48;
if(strcmp(s,"ht55")==0)n=49;
if(strcmp(s,"ht60")==0)n=50;
if(strcmp(s,"ht65")==0)n=51;
if(strcmp(s,"ht70")==0)n=52;
if(strcmp(s,"ht75")==0)n=53;
if(strcmp(s,"ht80")==0)n=54;
if(strcmp(s,"ht85")==0)n=55;
if(strcmp(s,"ht90")==0)n=56;

  for(i=0;i<j;i++,fn++)
  {if(fn==2365 || fn==2366)
      {fn=3001;
      }
  FN=IntToStr(fn);
  FN="ìåñÿö\\0"+FN+"V.DAT";
  FNO="ãèñòîãðàììû\\0"+FN+"VG.DAT";
  FILE*p=fopen(FN.c_str(),"r");
      if(!p)
      {fclose(p);
       continue;
      }
  FILE*o=fopen(FNO.c_str(),"w");

  fgets(&ch[0],500,p);

  k=0;
    while(!feof(p))
     {    for(c=0;c<56;c++)fscanf(p,"%s",&ss[c][0]);
    if(strcmp(&ss[n][0],"******")==0)TM[k]=1000;
    else TM[k]=atof(&ss[n][0]);
        ListBox1->Items->Add(TM[k]);
        //fprintf(o,"%7.3lf\n",TM[k]);
    k++;

     }



  fclose(p);
  fclose(o);

}
}

//---------------------------------------------------------------------------


PM MAIL   Вверх
Anikmar
Дата 6.5.2007, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(AFenix85 @  6.5.2007,  14:47 Найти цитируемый пост)
не klin все равно выдает ошибку и ставит стрелку там где у меня в коде звездочки!

Текст ошибки можно?
PM MAIL ICQ   Вверх
Klin
Дата 6.5.2007, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Цитата(Anikmar @  6.5.2007,  23:13 Найти цитируемый пост)
Текст ошибки можно? 

Не информация секретная smile

А если серьезно, то текст ошибки действительно не помешал бы, а то разгребать весь код (там все-таки файлы используются) - это время. Которого так не хватает нам в жизни smile


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
AFenix85
Дата 7.5.2007, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 20.4.2007
Где: Россия,Иркутск

Репутация: нет
Всего: нет



Debugger Exception Notification

Project Project1.exe raised exception class EAccessViolation with message 'Access violetion at address 0045D7C5 in module
'Project1.exe'.Read of address 0096AE45'.Process stopped.Use Step or Run to continue.

ну че,легче вам от этого? smile  
PM MAIL   Вверх
Anikmar
Дата 7.5.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(AFenix85 @  7.5.2007,  12:11 Найти цитируемый пост)
ну че,легче вам от этого?    

На самом деле лично мне да. Потому, что в приведенных вами кодах есть 2 места со звездочками. Мне было интересно как именно ругается комп.

Уверен на 99%, что ошибка здесь:
Код

for(c=0;c<56;c++)fscanf(p,"%s",&ss[c][0]);


Вы на 100% уверены, что fscanf не цепанет строку длиннее 6 символов?
Так как ваш массив предназначен только для 7 символов в каждой строчке (включая 0), то вариант порчи памяти весьма вероятен. Проверьте под отладчиком что там реально считывается.

P.S.
Я бы не стал из файла считывать в такой ограниченный буфер без какого-либо контроля длины. Если файл битый - программа слетит за милую душу - нигде нет защиты от этого.



PM MAIL ICQ   Вверх
AFenix85
Дата 7.5.2007, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 20.4.2007
Где: Россия,Иркутск

Репутация: нет
Всего: нет



Anikmar дело в том,что моя таблица уже составлена так,что там длина ВСЕХ чисел и заголовков 3,4,5,6 символа и пробел (\0 является вторым пробелом но его не учитываем)!

А не могли бы вы более конкретно обьяснить почему именно этот цикл!?

Вся моя прога работает,но если я отключу ввод из Edita, хотелось из него!Ну да ладно,главное работает исправно без этого,хоть и очень обьемный текст проги получается!      
PM MAIL   Вверх
Klin
Дата 7.5.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



AFenix85, Согласен с Anikmar, насчет контроля длины.
Цитата(AFenix85 @  7.5.2007,  16:24 Найти цитируемый пост)
А не могли бы вы более конкретно обьяснить почему именно этот цикл!?

Дело  не в цикле, а в функции fscanf!


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0893 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.