Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] создание формы


Автор: fenwer 18.2.2008, 21:42
Пожалуйста помогите ! 
Код

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

#include <vcl.h>
#include "Unit1.h"
#include "stdio.h"
#include "jpeg.hpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int f;
TOleni Oleni;

int GetInt(int f);
int GetString(int f,AnsiString *st);

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{

}
//---------------------------------------------------------------------------


void __fastcall TForm1::Edit2Change(TObject *Sender)
{
    if( (Edit2->Text.Length()!=0)&&(Edit2->Text.Length()!=1))
         Button2->Visible = true;
    else
      Button2->Visible=false;

    if( (Edit2->Text.Length()!=0)&&(Edit2->Text.Length()!=1))
         Button3->Visible = true;
    else
      Button3->Visible=false;


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

    /* ôàéë ìîæíî îòêðûòü â ðåæèìå fmCreate, òîãäà, åñëè
       ôàéë ñóùåñòâóåò, îí áóäåò îòêðûò äëÿ çàïèñè,
       åñëè ôàéëà íåò, òî îí áóäåò ñîçäàí */

    st = Edit1->Text + "\r\n";

    /* îòêðûòü äëÿ çàïèñè èëè ñîçäàòü ôàéë meteo.txt */


    if ( FileExists("gamno.txt") )
        f = FileOpen("gamno.txt",fmOpenWrite);
    else
       f = FileCreate("gamno.txt");


    if ( f != -1 )
    {
        // ôàéë îòêðûò äëÿ çàïèñè
        FileSeek(f,0,2); // óñòàíîâèòü óêàçàòåëü íà êîíåö ôàéëà
        FileWrite(f,st.c_str(),st.Length());
        FileClose(f);
        Button1->Enabled = false;
        Edit1->Text = "";
    }

    else
    {
        /* îøèáêà äîñòóïà ê ôàéëó: íè îòêðûòü,
           íè ñîçäàòü íå ïîëó÷èëîñü */
        ShowMessage("Oøèáêà äîñòóïà ê ôàéëó: íè îòêðûòü,"
                     "íè ñîçäàòü íå ïîëó÷èëîñü");
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
if( (Edit1->Text.Length()!=0)&&(Edit1->Text.Length()!=1))
         Button1->Enabled = true;
    else
      Button1->Enabled=false;        
}
//---------------------------------------------------------------------------

bool GetBarans(TOleni*v)
{
 AnsiString st;
 int p;
   if(GetString(f,&(v->Olen))!=0)
   {
   v->Olen=GetString(f,&st);
   v->Group=GetString(f,&st);
   v->Habitat=GetString(f,&st);
   v->Amount=GetInt(f);
   v->Img=GetInt(f);
   p=GetInt(f);
   if(p)
   GetString(f,&(v->Img));
   else v->Img=" ";
   return true;
   }
   else return false;
   }

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


void __fastcall TForm1::ShowOleni(TOleni v)
 {
 Image1->Picture->LoadFromFile(v.Img);
 Image1->AutoSize=true;

        Image1->Enabled = true;

 }
//---------------------------------------------------------------------------
 
int GetString(int f, AnsiString *st)
{
    unsigned char buf[300]; // ñòðîêà (áóôåð)
    unsigned char *p = buf;  // óêàçàòåëü íà ñòðîêó

    int n;       // êîë-âî ïðî÷èòàííûõ áàéò (çíà÷åíèå ô-è FileRead)
    int len = 0; // äëèíà ñòðîêè

    n = FileRead(f, p, 1);
    while ( n != 0 )
    {
        if ( *p == '\r')
        {
            n = FileRead(f, p, 1); // ïðî÷èòàòü '\n'
            break;
        }
        len++;
        p++;
        n = FileRead(f, p, 1);
    }

    *p = '\0';
    if ( len !=0)
        st->printf("%s", buf);
    return len;
}

// ÷èòàåò èç ôàéëà öåëîå ÷èñëî
int GetInt(int f)
{
    char buf[20];   // ñòðîêà (áóôåð)
    char *p = buf;  // óêàçàòåëü íà ñòðîêó

    int n;       // êîë-âî ïðî÷èòàííûõ áàéò (çíà÷åíèå ô-è FileRead)
    int a;       // ÷èñëî, ïðî÷èòàííîå èç ôàéëà

    n = FileRead(f, p, 1) ;
    while ( (*p >= '0') && (*p <= '9') && (n > 0) )
    {
        p++;
        n = FileRead(f, p, 1) ;
    }

    if ( *p == '\r')
        n = FileRead(f, p, 1); // ïðî÷èòàòü '\n'

    *p = '\0';

    // èçîáðàæåíèå ÷èñëà â áóôåðå, ïðåîáðàçóåì â öåëîå
    sscanf(buf,"%i", &a);
    return a;
}


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

void __fastcall TForm1::ShowOlenii(TOleni v)
{
ListBox2->Count=3;
  ListBox2->Items->LoadFromFile(v.Olen);

}


Код

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
#include <string.h>
struct TOleni{
AnsiString Img;
AnsiString Olen;
AnsiString Group;
AnsiString Habitat;
AnsiString Amount;
};

//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TPageControl *PageControl1;
        TTabSheet *TabSheet1;
        TTabSheet *TabSheet2;
        TTabSheet *TabSheet3;
        TLabel *Label1;
        TButton *Button1;
        TEdit *Edit1;
        TGroupBox *GroupBox1;
        TComboBox *ComboBox1;
        TLabel *Label2;
        TLabel *Label3;
        TComboBox *ComboBox2;
        TLabel *Label4;
        TEdit *Edit2;
        TButton *Button2;
        TButton *Button3;
        TComboBox *ComboBox3;
        TButton *Button4;
        TImage *Image1;
        TListBox *ListBox2;
        void __fastcall Edit2Change(TObject *Sender);
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall Edit1Change(TObject *Sender);

private:
void __fastcall ShowOleni(TOleni v);
void __fastcall ShowOlenii(TOleni v);    // User declarations
public:        // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif





Прога еще не совсем дописана, но принцип такой : данные берутся из файла и потом распихиваются по полям формы. Почему картинки не грузятся и в листбокс не добавляются данные? И если кто может напиште примерную функцию как из файла добавить в определенное поле формы определенную строку.
Заранее огромное спасибо smile

Добавлено через 5 минут и 36 секунд
Текстовый файл выглядит у меня так :
gh.jpg
Джейран
А
Азия
30000
tg.jpg
Гну
В
Африка
560000
rg.jpg
Бейза
С
Африка
2500

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)