AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe bei Stringlist

Ein Thema von celinaw · begonnen am 9. Jun 2004 · letzter Beitrag vom 11. Jun 2004
 
Benutzerbild von celinaw
celinaw

Registriert seit: 2. Apr 2004
162 Beiträge
 
#1

Hilfe bei Stringlist

  Alt 9. Jun 2004, 23:50
Hi

Foldender Code Importiert den Inhalt von Textdateien in eine SQL Datenbank.
Der Code stammt von Duffy. Habe ihn nur etwas angepasst. Es funktionier auch alles. Allerdings hat sich nun der Aufbau der Textdatei um eine zusätliche Angabe erweitert. "Papier: xx".
Ich habe mal die alte und neue Datei angehängt.

Was muss ich jetzt im Code ändern, damit es wieder funktioniert
In der SQL Tabelle habe eine weiter Spalte angelegt mit dem Namen "Format". Hier soll dann die Zahl hinein die hinter Papier steht.

Hier mal ein stück von dem Code:


Delphi-Quellcode:


procedure TForm1.ProcessFile(Filename: TFileName);
var
  I: Integer;
  Importfile: TStrings;
  StrToken: TStrings;
  Batchnr: string;
  DateStr: string;
  Format: string;
  Creationdate: TDateTime;
begin
  Importfile := TStringList.Create;
  StrToken := TStringList.Create;
  Importfile.LoadFromFile(Filename);
  // Damit das ganze uebersichtlicher wird, werden
  // alle Leerzeilen entfernt und Tabulatoren zu Space ' ' gewandelt
  for I := Importfile.Count - 1 downto 0 do
  begin
    Importfile.Strings[I] := ChangeChars(Importfile.Strings[I], #9, #32);
    if Trim(Importfile.Strings[I]) = 'then
      Importfile.Delete(I);
  end;

  // Batchnummer und Datum der Datei holen
  Batchnr := Trim(Copy(Importfile.Strings[0], Pos('Batch-Nr.', Importfile.Strings[0]) + 10,
                       Pos('Datum:', Importfile.Strings[0]) - (Pos('Batch-Nr.', Importfile.Strings[0]) + 10)));

  DateStr := Trim(Copy(Importfile.Strings[0], Pos('Datum:', Importfile.Strings[0]) + 7, 10));

  Format := Trim(Copy(Importfile.Strings[0], Pos('Papier:', Importfile.Strings[0]) + 8, 10));

  Creationdate := StrToDate(DateStr);

  // Datei zeilenweise zerlegen
  for I := 3 to Importfile.Count - 1 do
  begin
    StringPickToPieces(Importfile.Strings[I], ' ', StrToken);
    gauge1.maxvalue := zquery.FieldCount;
    gauge1.Visible:= True;
    ZQuery.Insert; // Datei in Appendmodus setzen
    with ZQuery do
    begin
      // Daten aus dem Header
      FieldByName('datum').AsDateTime := Creationdate;
      FieldByName('batchnummer').AsString := Batchnr;
      
      // Hier kommen die Daten
      FieldByName('lfdnr').AsInteger := StrToInt(StrToken.Strings[0]);
      FieldByName('auftrags_nr').AsInteger := StrToInt(StrToken.Strings[1]);
      FieldByName('kunden_nr').AsInteger := StrToInt(StrToken.Strings[2]);
      FieldByName('anzahl_bilder').AsInteger := StrToInt(StrToken.Strings[3]);
      FieldByName('summe').AsInteger := StrToInt(StrToken.Strings[4]);
      FieldByName('type').AsString := StrToken.Strings[5];
      FieldByName('uhrzeit').AsDateTime := StrToTime(StrToken.Strings[6]);
      gauge1.progress := gauge1.progress + 1;
    end;
    ZQuery.Post; // Satz schreiben
   end;
  gauge1.progress := 0;
  gauge1.Visible:= false;
  Importfile.Free;
  StrToken.Free;
end;
//-----------------------------------------------------------------------//

//#######################################################################//
//## Procedure Processing: ##//
//#######################################################################//
//## Datum: Änderung: ##//
//## ====== ========= ##//
//## 08.10.2003 Initial Release ##//
//#######################################################################//
procedure TForm1.Processing;
var
  Files: TStrings;
  I, J: Integer;
begin
  Busy := True; // jetzt sind wir ersteinmal beschäftigt

  StringMsgToFile('Das Ereignis wurde ausgelöst.');

  Files := TStringList.Create; // Dateiliste kreieren

  // MySQL Tabelle öffnen
  ZQuery.Open;

  // Die zu importierenden Dateien verarbeiten;
  for I := 0 to ImportFiles.Count - 1 do
  begin
    SHMoveFile2(0, AddBackSlash(SourceDir) + ImportFiles.Strings[I],
               CacheDir);

    Files.Clear;
    Sleep(5000);
    GetFilesInDirectory(AddBackSlash(CacheDir), ImportFiles.Strings[I], Files, False);
    StringMsgToFile('Es wurden ' + IntToStr(Files.Count) + ' Dateien zum verarbeiten gefunden.');
    for J := 0 to Files.Count - 1 do
    begin
      ProcessFile(Files.Strings[J]);
    end;
    SHMoveFile(0, AddBackSlash(CacheDir) + ImportFiles.Strings[I],
               DestinationDir);
  end;

  // MySql Tabelle schliessen
  ZQuery.Close;

  Files.Free; // Dateiliste freigeben

  StringMsgToFile('Das Ereignis wurde beendet.');

  RunTime := GetNetxRunTime; // Nächste Laufzeit ermitteln

  Busy := False; // wir sind wieder für alles offen
end;
//-----------------------------------------------------------------------//


//#######################################################################//
//## Procedure StringPickToPieces: ##//
//#######################################################################//
//## Datum: Änderung: ##//
//## ====== ========= ##//
//## 08.10.2003 Initial Release ##//
//#######################################################################//
procedure TForm1.StringPickToPieces(Str: AnsiString;
                                       Separator: Char;
                                       Strings: TStrings);
var
  TmpStr: string;
begin
  try
    Strings.Clear; // Stringliste löschen
    while AnsiPos(Separator, Str) > 0 do // solange es noch einen Separator gibt
    begin
      TmpStr := Copy(Str, 1, AnsiPos(Separator, Str) - 1);
      if Trim(TmpStr) <> 'then
        Strings.Add(TmpStr); // Token in der Stringliste sichern
      Str := Copy(Str, AnsiPos(Separator, Str) + 1, Length(Str)); // String um das Token mit Separator kürzen
    end;
    if Trim(Str) <> 'then
    Strings.Add(Str); // und das letzte Token auch mitnehmen
  except
    // hier könnte auch noch was gemacht werden
  end;
end;
Kann mir da jemand bei helfen?


Gruß Celina
Angehängte Dateien
Dateityp: zip dateien.zip (2,2 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz