Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa iscitavanjem narednog reda

[es] :: C/C++ programiranje :: C/C++ za početnike :: Problem sa iscitavanjem narednog reda

[ Pregleda: 1947 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

NooND
Out there

Član broj: 149987
Poruke: 54
*.telrad.net.



Profil

icon Problem sa iscitavanjem narednog reda18.04.2008. u 16:09 - pre 195 meseci
Zadatak je da napravim "MFC aplikaciju" u koju unosim ime prezime i broj indeksa,program to upisuje u txt fajl a imam i taster i za citanje pa mogu da citam podatke iz tog txt fajla.Vecinu stvari sam rjesio ali sam zapeo kod iscitavanja podataka iz fajla, uspjevam da iscitam samo prvi red iz fajla. Treba mi da mogu zasebno da iscitavam svaki red u polje ispis.Bilo bi super i ako bi mogao da radim pretrazivanje na osnovu broja indeksa, tj. pretragu na osnovu jednog djela stringa.
Unapred hvala.
Code:

// UnosStudenta1Dlg.cpp : implementation file
//

#include "stdafx.h"
#include "UnosStudenta1.h"
#include "UnosStudenta1Dlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
    CAboutDlg();

// Dialog Data
    //{{AFX_DATA(CAboutDlg)
    enum { IDD = IDD_ABOUTBOX };
    //}}AFX_DATA

    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CAboutDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    //}}AFX_VIRTUAL

// Implementation
protected:
    //{{AFX_MSG(CAboutDlg)
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
    //{{AFX_DATA_INIT(CAboutDlg)
    //}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CAboutDlg)
    //}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    //{{AFX_MSG_MAP(CAboutDlg)
        // No message handlers
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CUnosStudenta1Dlg dialog

CUnosStudenta1Dlg::CUnosStudenta1Dlg(CWnd* pParent /*=NULL*/)
    : CDialog(CUnosStudenta1Dlg::IDD, pParent)
{
    //{{AFX_DATA_INIT(CUnosStudenta1Dlg)
    ime = _T("");
    indeks = _T("");
    prezime = _T("");
    info = _T("");
    //}}AFX_DATA_INIT
    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CUnosStudenta1Dlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CUnosStudenta1Dlg)
    DDX_Text(pDX, IDC_ime, ime);
    DDX_Text(pDX, IDC_indeks, indeks);
    DDX_Text(pDX, IDC_prezime, prezime);
    DDX_Text(pDX, IDC_info, info);
    //}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CUnosStudenta1Dlg, CDialog)
    //{{AFX_MSG_MAP(CUnosStudenta1Dlg)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_snimi, Onsnimi)
    ON_BN_CLICKED(IDC_citaj, Oncitaj)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CUnosStudenta1Dlg message handlers

BOOL CUnosStudenta1Dlg::OnInitDialog()
{
    CDialog::OnInitDialog();


    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);            // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon
    
    // Kreiranje nove instance klase CFile
    CStdioFile Fajl;

    // Kreiranje novog fajla na fajl-sistemu
    Fajl.Open("baza.txt", CFile::modeCreate);

    // Zatvaranje fajla
    Fajl.Close();
    
    return TRUE;  // return TRUE  unless you set the focus to a control
}

void CUnosStudenta1Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }
    else
    {
        CDialog::OnSysCommand(nID, lParam);
    }
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CUnosStudenta1Dlg::OnPaint() 
{
    if (IsIconic())
    {
        CPaintDC dc(this); // device context for painting

        SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

        // Center icon in client rectangle
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;

        // Draw the icon
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        CDialog::OnPaint();
    }
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CUnosStudenta1Dlg::OnQueryDragIcon()
{
    return (HCURSOR) m_hIcon;
}

void CUnosStudenta1Dlg::Onsnimi() 
{
    UpdateData(true);
    CStdioFile Fajl;
    Fajl.Open( "baza.txt", CFile::modeWrite);
    Fajl.SeekToEnd();
    Fajl.WriteString(ime+" "+prezime+" "+indeks);
    Fajl.WriteString("\n");
    Fajl.Close();
    MessageBox("Snimanje sadzaja je uspesno obavljeno.", "Snimanje");
    ime = "";
    prezime = "";
    indeks = "";
    info = "";
    UpdateData(false);    
}

void CUnosStudenta1Dlg::Oncitaj() 
{
    UpdateData(true);
    CStdioFile Fajl;
    Fajl.Open( "baza.txt", CFile::modeRead);
    Fajl.ReadString(info);
    UpdateData(false);
}



[Ovu poruku je menjao NooND dana 19.04.2008. u 13:08 GMT+1]

[Ovu poruku je menjao NooND dana 19.04.2008. u 14:00 GMT+1]
In the kingdom of the blind one-eye man is the king.
Prikačeni fajlovi
 
Odgovor na temu

xeron
Sarajevo

Član broj: 25909
Poruke: 133
*.PPPoE-896.sa.bih.net.ba.



Profil

icon Re: Problem sa iscitavanjem narednog reda18.04.2008. u 22:59 - pre 195 meseci
Nisam pregladao tvoj primjer, ali po nazivu teme i tvom problemu sam napisao kratki program koji obavlja ono sto si trazio.

ovako izgleda file u kojem se nalaze podaci:
Citat:

aaaa bbb 14444
cccc d 15567
eeee fff 11111
hhhh iii 22222


evo i programa:
Code:

#include <iostream>
#include <fstream>
using namespace std;

int main(void){
    ifstream ulaz("file.txt");
    string ime, prezime;
    int brIndexa;
    
    while(ulaz>>ime>>prezime>>brIndexa)
        cout<<ime<<"\t"<<prezime<<"\t"<<brIndexa<<endl;
    return 0;
}


if (argc > 1 && strcmp(argv[1], "-advice") == 0) {
printf("Don't Panic!n");
exit(42);
}
 
Odgovor na temu

NooND
Out there

Član broj: 149987
Poruke: 54
*.telrad.net.



Profil

icon Re: Problem sa iscitavanjem narednog reda19.04.2008. u 07:02 - pre 195 meseci
Hvala na pomoci ali je meni potrebno da u mom primjeru to primjenim, a nikako ne uspjevam.Nakacio sam i kompletan rad pa molim za pomoc
In the kingdom of the blind one-eye man is the king.
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-3.sezampro.yu.



+395 Profil

icon Re: Problem sa iscitavanjem narednog reda22.04.2008. u 18:09 - pre 194 meseci
Code:

CFile fajlbaza ("baza.txt",CFile::modeRead ) ; //otvori fajl 
UINT nCharSize = fajlbaza.GetLength()  ; // daj duzinu teksta tj broj karaktera
char* szBaza = new char[nCharSize+1] ; //alociraj memoriju za text 
szBaza [nCharSize] = '\0'; // terminating char 
fajlbaza.Read(szBaza ,nCharSize) ; //ucitaj text u tvoj bafer 

CString strText = szBaza ; //napravi objekat CString od niza karaktera 
delete [] szBaza ; // brisi alociranu memoriju 

int nPos = 0 ; 
int nCurrentPos = 0 ; 

nPos = strText.Find("\n",nCurrentPos + 1) ;
while (nPos != -1) 
{
    nPos = strText.Find("\n",nCurrentPos + 1) ; 
    //ovde uzimas ceo red iz tvog fajla i mozes  da  ga uporedis sa tvojim search string-om 
    // mozes istu logiku da primenis na "strRed" da bi izvadio ime, prezime index itd ...  
    //samo sto ces u Find metodi da naznacis da trazi " " kao delimiter umesto "\n"  ; 
    CString strRed = strText.Mid(nCurrentPos,nPos - nCurrentPos) ; 
    nCurrentPos = nPos ; 

}

Viva lollapalooza
 
Odgovor na temu

NooND
Out there

Član broj: 149987
Poruke: 54
*.bl.pttrs.net.



Profil

icon Re: Problem sa iscitavanjem narednog reda27.04.2008. u 08:11 - pre 194 meseci
Pokusacu, hvala na pomoci
In the kingdom of the blind one-eye man is the king.
 
Odgovor na temu

NooND
Out there

Član broj: 149987
Poruke: 54
*.telrad.net.



Profil

icon Re: Problem sa iscitavanjem narednog reda27.05.2008. u 16:17 - pre 193 meseci
Uspjeo sam da prijenim tvoj kod, radi super, malo mi je trebalo ali sam skontao.Ipak sam totalni pocetnik.
Hvala puno
In the kingdom of the blind one-eye man is the king.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Problem sa iscitavanjem narednog reda

[ Pregleda: 1947 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.