Re Borland6

Signaler
Messages postés
38
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
5 juin 2004
-
Messages postés
38
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
5 juin 2004
-
Je n'arrive pas a trouver la synthaxe pour réaliser cet opération:
Créer un fichier de type .txt (fichier qui n'existe pas à l'origine).
L'opération s'execute avec un button1click.
pour part la suite entrer des informations collectées dans une listBox (mais ca je sais faire).
En fait c'est simplement la création du fichier qui me pose probleme (pourtant j'ai regardé l'aide mais j'ai rien trouvé: j'ai sans doute mal regardé...).
Si kelkun avait la solution...merci

9 réponses

Messages postés
38
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
5 juin 2004

J'ai oublié de préciser que ca serait fait automatiquement. Le fichier serait créer sans aucune fenetre et non modifiable ( en fait je ne veux pas passer par une savedialog
Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
Ou tu n'es pas trés clair dans ce que tu veux ou c'est moi dans les explications.

si ce que tu veux c'est sauvegarder le contenue d'une lite box dans un fichier, ma première réponse a ta question est exacement ce que tu cherche il faut juste remplacer SaveDialog1->FileName par le nom de ton fichier (je l'ai d'ailleurs mentionné dans ma réponse) le fichier s'il n'existe pas est créé
Messages postés
38
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
5 juin 2004

C'est moi qui est ambigü dans mes explications (excuse moi)
Je t'explique bien cet fois ci (enfin j'espère).

En fait j'ai une Edit, un Button et une ListBox.
Ce que je voulais réaliser (sans passer par une BD):

Lorsque j'inscrit un Nom dans l'Edit et que je clique sur le Button, Ca me créé automatiquement un fichier .txt à un endroit donné et portant comme filename le nom rentré dans l'Edit. Ce fichier me servira a stocker des infos sur cette personne (infos rentrée dans la listbox).

comme je suis un bleu dans ce domaine, je fouille dans l'aide... et j'ai vu que la SaveDialog permet d'enregistrer un fichier quelconque mais par l'intermédiaire d'une fenêtre.
Je ne connais peut etre pas bien la SaveDialog...
J'arrive à enregistrer des données dans un fichier existant (donc pour la listbox j'ai aucun probleme.
par contre c'est la création du fichier qui me pose probleme:

Je voudrais le créer dans c: donc faudrait que je fasse un truc du genre?
Filename=Edit1->text;
...?
/*pour Sauvegarder les données dans la listbox*/
ListBox1->Items->SaveToFile("C:\"+FileName);
/*pour Charger les données dans la listbox*/
ListBox1->Items->LoadFromFile("C:\"+FileName);

Voila c'est long et j'espère que tu aura mieux compris.
Si t'as la solution ( celle que tu me donne depuis 2 mails ou une autre),fait la moi parvenir.
merci
Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
Bonjour,

donc si j'ai cette fois bien compris ce que tu voulais, ceci devrais correspondre à ton besoin.

----Fichier Unit1.dfm------
object Form1: TForm1
Left = 216
Top = 103
Width = 226
Height = 444
Caption = 'Personne'
Color = clBtnFace
Constraints.MaxHeight = 444
Constraints.MaxWidth = 226
Constraints.MinHeight = 444
Constraints.MinWidth = 226
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 8
Top = 8
Width = 74
Height = 13
Caption = 'Nom du fichier :'
end
object EdNomFichier: TEdit
Left = 88
Top = 8
Width = 121
Height = 21
TabOrder = 0
end
object BtLecture: TButton
Left = 8
Top = 40
Width = 97
Height = 25
Caption = '&Lecture'
TabOrder = 1
OnClick = BtLectureClick
end
object BtSauvegarde: TButton
Left = 120
Top = 40
Width = 91
Height = 25
Caption = '&Sauvegarde'
TabOrder = 2
OnClick = BtSauvegardeClick
end
object LbRenseignement: TListBox
Left = 8
Top = 136
Width = 201
Height = 241
ItemHeight = 13
TabOrder = 3
end
object EdRenseignement: TEdit
Left = 8
Top = 112
Width = 201
Height = 21
TabOrder = 4
end
object BtAjouter: TButton
Left = 8
Top = 80
Width = 201
Height = 25
Caption = '&Ajouter'
TabOrder = 5
OnClick = BtAjouterClick
end
object BtEffacerTout: TButton
Left = 8
Top = 384
Width = 201
Height = 25
Caption = '&Effacer Tout'
TabOrder = 6
OnClick = BtEffacerToutClick
end
end
----Fin du fichier Unit1.dfm------

----Fichier Unit1.h------
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // Composants gérés par l'EDI

TEdit *EdNomFichier;
TLabel *Label1;
TButton *BtLecture;
TButton *BtSauvegarde;
TListBox *LbRenseignement;
TEdit *EdRenseignement;
TButton *BtAjouter;
TButton *BtEffacerTout;

void __fastcall BtLectureClick(TObject *Sender);
void __fastcall BtSauvegardeClick(TObject *Sender);
void __fastcall BtAjouterClick(TObject *Sender);
void __fastcall BtEffacerToutClick(TObject *Sender);

public: // Déclarations de l'utilisateur

__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
----Fin du fichier Unit1.h------

----Fichier Unit1.cpp------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
bool __fastcall FileNameIsOk(AnsiString FileName, bool NoCreate)
{
int iFileHandle;

if (FileExists(FileName))
return true;
iFileHandle = FileCreate(FileName);
if (iFileHandle == -1)
return false;
FileClose(iFileHandle);
if (NoCreate)
DeleteFile(FileName);
return true;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){}
//---------------------------------------------------------------------------
void __fastcall TForm1::BtLectureClick(TObject *Sender)
{
if (EdNomFichier->Text != "")
{
AnsiString FileName = "c:\" + EdNomFichier->Text + ".txt";
if (FileExists(FileName))
{
LbRenseignement->Clear();
EdRenseignement->Text = "";
LbRenseignement->Items->LoadFromFile(FileName);
}
else
{
AnsiString Msg = "Le fichier [c:\" + EdNomFichier->Text + ".txt] n'existe pas!";
Application->MessageBox(Msg.c_str(), "Erreur", MB_OK);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BtSauvegardeClick(TObject *Sender)
{
if (EdNomFichier->Text != "")
{
AnsiString FileName = "c:\" + EdNomFichier->Text + ".txt";
if (FileNameIsOk(FileName, true))
LbRenseignement->Items->SaveToFile(FileName);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BtAjouterClick(TObject *Sender)
{
if (EdRenseignement->Text != "")
if (LbRenseignement->Items->IndexOf(EdRenseignement->Text) == -1)
LbRenseignement->Items->Add(EdRenseignement->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BtEffacerToutClick(TObject *Sender)
{
EdNomFichier->Text = "";
EdRenseignement->Text = "";
LbRenseignement->Clear();
}
//---------------------------------------------------------------------------
----Fin du fichier Unit1.cpp------

Bien il faut encore améliorer, pour ajouter notament des messages d'avertissement lorsque l'utilisateur fait une action incorrect. Il faut gérer un flag de modification du fichier pour ne faire une sauvegarde que lorsque necessaire ou éviter de sortir sans avoir sauvegarder.

Bonne continuation.
A+
Messages postés
38
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
5 juin 2004

C'est exactement ce qu'il me fallait :) .
Merci encore pour ton aide.
Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
C'est super alors :o)

mais je sais pas exactement ce que tu veux faire, mais il me semble que si il faut que tu stockes des fiches de personnes mais que tu ne veuille pas faire appel à une base de données, tu devrais stoker cela dans un fichier séquentiel indexé, ce serais plus pratique et rapide d'accès.

Bonne continuation

A+
Messages postés
38
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
5 juin 2004

Salut,
En fait je suis entrain de créer une application, pour une p'tite
école, qui gère des livres (d'une bibliothèque):
-inscription d'une personne
-Nouveau livre
-Liste des inscrits et infos diverses
-Liste des livres
-Emprunt
-Retour
-Retards
( c'est ce qui composent les onglets de la PageControl )
Comme je suis entrain de découvrir access et que de "légal", je n'ai que Borland6... et bien je n'ai pas trop envie de l'utiliser. ( il y a MySQL qui a l'air tres bien mais encore faudrait-il savoir l'utiliser...). Donc je fais avec mes p'tites connaissances et puis voilà. D'autre part je ne connais pas la fabrication de fichier séquentiel indexé!
De toute facon lorsque j'aurais appris a me servir un peu d'une SGBD je le referais.
par contre il y a un autre truc que je ne comprends pas dans l'affaire.
Lorque je veux détruire un fichier dont le nom se trouve dans ma listbox je dois faire:
AnsiString FileName="C:\\BIBLIO\"+ListBox_inscrits->Items->Strings[ListBox_Inscrits->Items->ItemIndex]+".txt";
DeleteFile(FileName);

Le fichier éxiste bien et ca plante lorsque je veux le supprimer!!!
Si je me souviens bien DeleteFile reçoit un AnsiString comme paramètre!!
Et FileName est correct puisque j'en ai un autre qui me sert à créer ce fichier et qui marche très bien. Si tu pouvait m'éclairer.
Et promis après je ne t'embête plus.
A+
Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
comme ça cela à effectivement l'air d'être correct, sauf si aucun élément dans la liste n'est selectionné ou plusieurs (multi-select) dans ces deux cas ItemIndex est égal à -1

envoie moi si c'est pas trop gros un message avec ton source un peu comme je l'avis fait avec les fichires DFM H et CPP (dans ma boite message) je le passerai sous le debugger pour voir ce qu'il se passe, j'en profiterais pour voir plus précisement ce que tu veux faire et t'orienter vers l'utilisation de quelque chose d'n peu plus performant.
dis moi aussi qu'elle version as tu de borland 6 standard, pro ou entreprise?

A+
Messages postés
38
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
5 juin 2004

Salut,
tout d'abord ma version de borland6 est la moin évoluée:
Borland 6 c++builder personnel.
(mais bon j'ai de quoi faire avec...)
Ca me dérange pas de t'envoyer le source (au contraire un peu aide n'a jamais fait de mal) cependant il va y avoir un p'tit problème de taille, donc si t'avais un E-mail où je pourrais te l'envoyer (et en meme temps l'executif du coup meme s'il n'a pas avancer ce WE). Ca te permttera d'avoir une idée précise de ce que j'aimerais faire comme application.
A+