Einzelnen Beitrag anzeigen

Deadinpac

Registriert seit: 8. Aug 2003
Ort: Oberreute
74 Beiträge
 
Delphi 2007 Enterprise
 
#23

Re: Strings Zerlegen zum 1000 mal^^

  Alt 8. Mai 2005, 16:42
Juhu es Klappt danke St.pauli und die anderen DPlers die Mir Geholfen haben

So St.Pauli hatte den QT noch ein Bisschen überarbeitet

hier der Aktuelle QT

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
VAR i, Geld, Geld2: integer;
   namealt, nameneu : string;
begin
  Memo1.Lines.LoadFromFile('Geld.txt'); //In der Datei Geld.txt sind alle Daten
  namealt := Copy(Memo1.Lines[0], 19, Pos(' legt', Memo1.Lines[0])-19); //der erste Name wird erstellt
  nameneu := '';
  for i := 0 to Memo1.Lines.Count do //Alle Einträge durchgehen
  begin

  IF (Pos('legt', Memo1.Lines[i]) > 0) THEN nameneu := Copy(Memo1.Lines[i], 19, Pos(' legt', Memo1.Lines[i])-19);
  IF (Pos('nimmt sich', Memo1.Lines[i]) > 0) THEN nameneu := Copy(Memo1.Lines[i], 19, Pos(' nimmt sich', Memo1.Lines[i])-19);

  IF (namealt = nameneu) THEN
  begin
  IF (Pos('legt', Memo1.Lines[i]) > 0) THEN
    begin
      Geld2 := StrToInt(Copy(Memo1.Lines[i], 19 + length(Nameneu) + length(' legt '), Pos('', Memo1.Lines[i]) - (19 + length(Namealt) + length(' legt '))));
      Geld := Geld + Geld2; //Den "Legt" Betrag addieren
    end;

  IF (Pos('nimmt sich', Memo1.Lines[i]) > 0) THEN
    begin
      Geld2 := StrToInt(Copy(Memo1.Lines[i], 19 + length(Nameneu) + length(' nimmt sich '), Pos('', Memo1.Lines[i]) - (19 + length(Namealt) + length(' nimmt sich '))));
      Geld := Geld - Geld2; //-
    end;
  end;

  IF ((namealt = nameneu) = false) THEN //Wenn die namen nicht identisch sind (neuer Benutzer)...
  begin
  ListBox1.Items.Add(namealt + ' = ' + IntToStr(Geld)); //...dann adde erstmal die alten Daten in die 2te Memo
  Geld := 0; //Geld auf 0, eigentlich unnötig
  namealt := nameneu; //Hier werden die Namen gleichgesetzt, sonst wäre diese Bedinung immer True
  IF (Pos('legt', Memo1.Lines[i]) > 0) THEN
    begin
      Geld2 := StrToInt(Copy(Memo1.Lines[i], 19 + length(Nameneu) + length(' legt '), Pos('', Memo1.Lines[i]) - (19 + length(Nameneu) + length(' legt '))));
      Geld := Geld2;
    end;

  IF (Pos('nimmt sich', Memo1.Lines[i]) > 0) THEN
    begin
      Geld2 := StrToInt(Copy(Memo1.Lines[i], 19 + length(Nameneu) + length(' nimmt sich '), Pos('', Memo1.Lines[i]) - (19 + length(Nameneu) + length(' nimmt sich '))));
      Geld := 0 - Geld2 ;
    end;
  IF (i = Memo1.Lines.Count-1) THEN ListBox1.Items.Add(namealt + ' = ' + IntToStr(Geld));
  end;

IF (i = Memo1.Lines.Count-1) THEN ListBox1.Items.Add(namealt + ' = ' + IntToStr(Geld));


LIstBox1.Sorted := True;
end;

namealt := '';
nameneu := '';
Geld := 0;

MEmo1.Lines.Clear;
namealt := Copy(ListBox1.Items[0], 1, Pos(' = ', ListBox1.Items[0])); //der erste Name wird erstellt

for i := 0 to ListBox1.Items.Count-1 do
  begin
  nameneu := Copy(ListBox1.Items[i], 1, Pos(' = ', ListBox1.Items[i]));
    IF (nameneu = namealt) THEN
      begin
        Geld2 := StrToInt(Copy(ListBox1.Items[i], length(namealt)+3, length(ListBox1.Items[i])-length(name)+3));
        Geld := Geld + GEld2;
      end;

    IF (nameneu = namealt) = false THEN
      begin
        memo1.Lines.Add(Namealt + ' = ' + IntToStr(Geld));
        namealt := nameneu;
        Geld2 := StrToInt(Copy(ListBox1.Items[i], length(namealt)+3, length(ListBox1.Items[i])-length(name)+3));
        Geld := 0;
        Geld := Geld + GEld2;
      end;
  end;


end;
MFG

Deadinpac
Sven Grimm
  Mit Zitat antworten Zitat