IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Probleme de Blockwrite


Sujet :

Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Animateur commercial
    Inscrit en
    Août 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Animateur commercial

    Informations forums :
    Inscription : Août 2011
    Messages : 47
    Points : 41
    Points
    41
    Par défaut Probleme de Blockwrite
    Bonjour

    Mon problème est le suivant, je suis en train de créer un petit programme pour écrire un format de fichier spécifique. Or je bloque sur un problème mais je ne sais pas d'ou cela peut venir. J'ai une procedure avec un blockwrite qui doit m'écrire un Edit.Text dans mon fichier sur 132. Donc quand mon Edit fait 8 caractères, il doit me mettre à la suite 124 fois 00.
    Mais je ne sais pas pourquoi à la place il me met à certains endroits des 'R au lieu de 00. Comme sur l'image ci dessous.

    Mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    NOm_Wad est un Ansistring
     
    Nom_Wad := Edit_Nom_Wad.Text;
    Setlength(Nom_Wad, 132);
    BlockWrite(F, Nom_Wad[1], length(Nom_Wad));

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    1. Il doit avoir une incohérence entre la valeur que tu as indique dans le Rewrite ou du Reset et celle que tu essaies d'écrire.
    2. SetLength n'initialise pas la chaine de caractère. Ex: tout ce qui est entre l'indice 9 et l'indice 132 contient n'importe quoi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    //  Nom_Wad2: AnsiString;
    //  lStringConversion: AnsiString;
     
     
     Nom_Wad2 := StringOfChar(#0, 132);
      lStringConversion := Edit_Nom_Wad.Text;
      for i := 1 to Length(lStringConversion) do
      begin
        Nom_Wad2[i] := lStringConversion[i];
      end;
     
     
      AssignFile(F, 'd:\test2.txt');
      Rewrite(F, Length(Nom_Wad2));
      BlockWrite(F, Nom_Wad2[1], 1); // Taille:Multiple de la taille de'enregistrement indiqué dans Rewrite
      CloseFile(F);
    j'utiliserai plutôt un filestream
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //  Nom_Wad: array [0 .. 131] of ansichar;
    //  lStringConversion: AnsiString;
     with TFileStream.Create('d:\test.txt', fmCreate or fmOpenWrite) do
      begin
        FillChar(Nom_Wad, Length(Nom_Wad), '');
        lStringConversion := Edit_Nom_Wad.Text;
        for i := 1 to Length(lStringConversion) do
        begin
          Nom_Wad[i - 1] := lStringConversion[i];
        end;
        Write(Nom_Wad, Length(Nom_Wad));
        Free;
      end;
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  3. #3
    Membre du Club
    Homme Profil pro
    Animateur commercial
    Inscrit en
    Août 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Animateur commercial

    Informations forums :
    Inscription : Août 2011
    Messages : 47
    Points : 41
    Points
    41
    Par défaut
    Un grand merci Linkin, les deux solutions fonctionnent parfaitement !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07
  2. Réponses: 2
    Dernier message: 30/05/2002, 08h54
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo