Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/07/2005, 20:39
Znet
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 22 años, 10 meses
Puntos: 0
Inquietud con memoria

Hola aqui pongo un codigo en el que estoy trabajando y a continuacion colocare mi duda.

Unit1.h
Código PHP:
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Menus.hpp>
#include <ExtCtrls.hpp>
#include <ComCtrls.hpp>
#include <Grids.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published// IDE-managed Components
        
TMainMenu *MainMenu1;
        
TMenuItem *Archivo1;
        
TMenuItem *Guardar1;
        
TMenuItem *N1;
        
TMenuItem *Salir1;
        
TMenuItem *E1;
        
TMenuItem *DeshacerCrtlz1;
        
TMenuItem *RehacerCrtlShitfZ1;
        
TMenuItem *N2;
        
TMenuItem *Cortar1;
        
TMenuItem *Copai1;
        
TMenuItem *PegarCtrlV1;
        
TMenuItem *Abrir1;
        
TPageControl *PageControl1;
        
TTabSheet *Cuentas;
        
TTabSheet *Estado;
        
TEdit *cuentains;
        
TButton *Button1;
        
TLabel *Label2;
        
TLabel *Label3;
        
TMenuItem *Configuarcin1;
        
TLabel *Label4;
        
TLabel *Label5;
        
TLabel *Label6;
        
TLabel *Label7;
        
TMenuItem *InformedeCuentas1;
        
TGroupBox *GroupBox1;
        
TLabel *Label1;
        
TGroupBox *GroupBox2;
        
TComboBox *ComboBox1;
        
TLabel *Label8;
        
TButton *Button2;
        
TButton *Button3;
        
TMemo *Memo1;
        
void __fastcall Abrir1Click(TObject *Sender);
        
void __fastcall Salir1Click(TObject *Sender);
        
void __fastcall Button1Click(TObject *Sender);
private: 
// User declarations
public:  // User declarations
        
__fastcall TForm1(TComponentOwner);
        
//estructura y funcion para cargar un archivo
        //a lista.
        
struct cuenta
        
{
         
int id;
         
char cta[30];
        };
        
void elementos(int &b);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif 
--------------------------------------------------------------------------

Unit1.cpp

Código PHP:
//---------------------------------------------------------------------------
//include <ctype.h>
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
#include "Unit1.h"
#include "struct.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponentOwner)
        : 
TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Abrir1Click(TObject *Sender)
{
 
FILE *fp,*fr;
 
int b;
 if((
fp=fopen("C:\\cuentas.dat","a+b"))==NULL)
 {
  
//ShowMessage("ERROR MAn");
  
MessageBox(fp,"Error al abrir archivo","Error",1);
 }
 else
 {
 
TForm1::elementos(b);
 
PageControl1->Visible=True;
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Salir1Click(TObject *Sender)
{
 exit(
0);        
}
//---------------------------------------------------------------------------
void TForm1::elementos(int &b)
{
 
//Función para saber los elementos que hay en el
 //archivo cuentas.dat
 
FILE *fp;
 
cuenta c;
 
b=0;
 if((
fp=fopen("C:\\cuentas.dat","rb"))==NULL)
 {
  
ShowMessage("Error al abrir el archivosss");
  exit(
0);
 }
 else
 {
  
fread(&c,sizeof(c),1,fp);
  while(!
feof(fp))
  {
   
b++;
   
fread(&c,sizeof(c),1,fp);
  }
 }
}
//---------------------------------------------------------------------------

//ShowMessage(ComboBox1->ItemIndex);
//Para tomar el item seleccionado del ComboBox

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
int b;
 
TForm1::elementos(b);
 
ShowMessage(b);
}
//--------------------------------------------------------------------------- 
Bien ahora como veran, cuento la cantidad de elementos que tiene el archivo
cuentas.dat, y lo almaceno en b.
Ahora cada vez que quiera usar b en cualquier parte del programa, tengo que
invocar si o si a la funcion de la clase TForm1::elementos(b);
Lo que quiero saber si se puede hacer es cuando hago click en abrir, ya tengo
la cantidad de elementos de b, y cuando quiero hacer otra accion con otro
boton, tengo que llamar a la funcion de nuevo para que b tome el valo de
la cantidad de elementos, ahora mi pregunta es, cuando yo hago click en abrir
y guardo esa cantidad en b, desde otro boton puedo accesar a ese espacio
de memoria donde esta almacenado b, sin hacer llamado a la funcion para que
vuelva a realizar el proceso de conteo?
Espero se me entienda lo que quiero decir.
Por las dudas lo vuelvo a explicar, al abrir, la cantidad de elementos se guarda
en b, ahora desde otro boton del programa yo quiero usar b, pero sin
llamar a la funcion que hace el conteo de la cantidad de elementos del archivo.
Ahora creo que esta mas clarito, bueno espero a ver que es lo puedo hacer,
probe con asignarle un * pero tampoco no me da.
Bueno Desde ya les agradezco el tiempo y las respuestas.
Salu2
__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-