Re Borland6

neo888 Messages postés 38 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 5 juin 2004 - 16 juin 2003 à 14:11
neo888 Messages postés 38 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 5 juin 2004 - 23 juin 2003 à 19:31
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

neo888 Messages postés 38 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 5 juin 2004
16 juin 2003 à 14:17
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
0
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
16 juin 2003 à 15:59
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éé
0
neo888 Messages postés 38 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 5 juin 2004
17 juin 2003 à 14:57
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
0
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
18 juin 2003 à 16:53
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neo888 Messages postés 38 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 5 juin 2004
19 juin 2003 à 13:53
C'est exactement ce qu'il me fallait :) .
Merci encore pour ton aide.
0
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
19 juin 2003 à 20:53
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+
0
neo888 Messages postés 38 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 5 juin 2004
20 juin 2003 à 15:25
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+
0
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
20 juin 2003 à 19:44
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+
0
neo888 Messages postés 38 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 5 juin 2004
23 juin 2003 à 19:31
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+
0
Rejoignez-nous