Paramétrer les séparateurs lors de la lecture d'un fichier texte

Paramétrer les séparateurs lors de la lecture d'un fichier texte - Delphi/Pascal - Programmation

Marsh Posté le 19-07-2004 à 13:13:56    

Bonjour,
Je développe un logiciel dans lequel je dois coder une fonction d'importation de données stockées dans des fichiers de type txt.
J'aimerai donner à l'utilisateur le choix du séparateur lors de la lecture d'un fichier texte.
Pour cele je rentre les différents séparateurs en items dans une combobox (par exple tabulation, point virgule, espace, virgule etc.) et je voudrais que l'utilisateur en fonction du fichier à lire choisisse le séparateur! et lancer l'importation des données. Je signale tout simplement que j'ai déjà développé la fonction de conversion des fichiers txt importés en fichiers base de données et que j'ai besoin tout juste de délimiter les chaines à la lecture pour l'identification des champs de mes tables.
Pourriez vous m'éclairer un peu sur les possibilités de coder celà?

Reply

Marsh Posté le 19-07-2004 à 13:13:56   

Reply

Marsh Posté le 23-07-2004 à 15:55:29    

Normalement ce code devrait t'aider... La fonction qui t'interesse est SetFiles, qui prend le nom du fichier à ouvrir et le conteneur (en TStrings) des éléments à rajouter.
 
function GetFileContent(const FileName: string): string;
var
    Lines: TStrings;
begin
    Result := '';
    Lines := TStringList.Create;
    try
        try
            Lines.LoadFromFile(FileName);
        except
            Exit;
        end;
        Result := Lines.Text;
    finally
        Lines.Free;
    end;
end; // GetFileContent
 
procedure AddItem(const Container: TStrings; const Item: string);
begin
    if Item <> '' then
        Container.Add(Item);
end; // AddItem
 
procedure SetItems(const FileName: string; const Container: TStrings);
const
    DELIMITERS = [' ', ',', ';', #9, #13];
var
    C: Char;
    Index: Integer;
    Content, Item: string;
begin
    Container.Clear;
    Content := GetFileContent(FileName);
    if Content = '' then
        Exit;
    Item := '';
    for Index := 1 to Length(Content) do
    begin
        C := Content[Index];
        if C = #10 then
            Continue;
        if C in DELIMITERS then
        begin
            AddItem(Container, Item);
            Item := '';
        end else
            Item := Item + C;
    end;
    AddItem(Container, Item);
end; // SetItems

Reply

Marsh Posté le 28-07-2004 à 14:34:47    

Salut,
Merci, c'est exactement ce qu'il me fallait à deux trois petites modifs prets, c'etait super sympa!
Merci

Reply

Marsh Posté le 01-08-2004 à 01:12:30    

jaimetonsourire a écrit :

Salut,
Merci, c'est exactement ce qu'il me fallait à deux trois petites modifs prets, c'etait super sympa!
Merci


De rien ca me fait plaisir a moi egalement. Et n'hesite pas des que tu as un probleme.

Reply

Marsh Posté le 05-08-2004 à 01:18:40    

jaimetonsourire a écrit :

Bonjour,
Je développe un logiciel dans lequel je dois coder une fonction d'importation de données stockées dans des fichiers de type txt.
J'aimerai donner à l'utilisateur le choix du séparateur lors de la lecture d'un fichier texte....


 
 
le mieux est de faire une table qui contient les différents séparateur et de faire des essais successifs jusque avoir celui qui convient.  
 
ou alors de considerer qu'un séparateur est un caractere qui n'est ni une lettre alphabétique ni un chiffre. Pour avoir une liste assez exhaustive de séparateurs vous pouvez avoir :  
 
;,/#! et tab vous collez ca dans un fichier à jour et vous livrez un bout de programme séparé qui mets à jour la liste en cas de soucis.  
 
 
et meme, vous prenez la premiere ligne, vous virez les lettres alphabétiques et les signes numériques comme "+-,." et vous vous retrouvez avec le séparateur.  


Message édité par p lejarre le 05-08-2004 à 16:25:22
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed