Registriert seit: 26. Dez 2004
351 Beiträge
Delphi 7 Personal
|
Re: Strings Zerlegen zum 1000 mal^^
7. Mai 2005, 22:46
Um auf Deadinpacs Problem zurückzukommen - ich war fleißig, und hab nochmal gearbeitet, jetzt ist es ganz nach deinen Wünschen:
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
Memo2.Lines.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 Memo2.Lines.Add(namealt + ' = ' + IntToStr(Geld));
end;
IF (i = Memo1.Lines.Count-1) THEN Memo2.Lines.Add(namealt + ' = ' + IntToStr(Geld));
Bei Fragen schick mir einfach ne PN.
PS: Hoffe es gehts
Gruß St.Pauli
|
|
Zitat
|