Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Werte aus String herausfiltern

  Alt 19. Okt 2005, 09:13
Hallo Fredbert,

herzlich willkommen in der Delphi-PRAXiS.

Lösungen können tendenziell nur so gut sein, wie die Problembeschreibung. Ohne Umschweife würde ich deine im Eröffnungsbeitrag gestellte Frage so beantworten:

Delphi-Quellcode:
uses
  Classes;

var
  slLines, slValues: TStrings;
  fileName: string;
  i, iLines: integer;
  iSum: Int64;

// Kleinere Dateien können komplett im Hauptspeicher verarbeitet werden
begin
  // Container für die Textzeilen mit den drei Werten
  slLines := TStringList.Create;

  // Container für die Zerlegung einer Zeile in drei Werte
  slValues := TStringList.Create;
  slValues.Delimiter := ' ';

  // Dateiname ist erster Aufrufparameter
  fileName := ParamStr(1);

  // Datei Laden
  slLines.LoadFromFile(fileName);

  for iLines := 0 to Pred(slLines.Count) do
  begin
    // Zeile an Leerstellen zerlegen
    slValues.DelimitedText := slLines[iLines];
    iSum := 0;
    // Zahlenwerte konvertieren und summieren
    for i := 0 to Pred(slValues.Count) do
      iSum := iSum + StrToInt(slValues[i]);
    // ...
  end;
end;
Wenn die Datei für diese Vorgehensweise zu groß ist, dann musst du sie zeilenweise verarbeiten:

Delphi-Quellcode:
var
  f: TextFile;
  i, iValue: integer;
  iSum: Int64;
begin
  AssignFile(f, fileName);
  Reset(f);

  while not Eof(f) do
  begin
    iSum := 0;
    for i := 1 to 3 do
    begin
      Read(f, iValue);
      iSum := iSum + iValue;
    end;
    ReadLn(f);
  end;

  CloseFile(f);
end;
Vielleicht gibt dir das ein paar Denkanstöße, wie du dein Problem lösen kannst. Code zum Überprüfen von möglichen Fehlern musst du selbst dazu schreiben.

Grüße vom marabu
  Mit Zitat antworten Zitat