Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Strings Zerlegen zum 1000 mal^^ (https://www.delphipraxis.net/45504-strings-zerlegen-zum-1000-mal%5E%5E.html)

doom98 8. Mai 2005 11:21

Re: Strings Zerlegen zum 1000 mal^^
 
Wuaegner
Hast recht es geht aber nur in Verbindung mit Chimaira Lösung vielen dank euch beiden :-D

Beckman 8. Mai 2005 12:32

Re: Strings Zerlegen zum 1000 mal^^
 
Delphi-Quellcode:
IF (b[i3] = '1')   //Wenn b[i3] eine Zahl ist...
        OR (b[i3] = '2')
        OR (b[i3] = '3')
        OR (b[i3] = '4')
        OR (b[i3] = '5')
        OR (b[i3] = '6')
        OR (b[i3] = '7')
        OR (b[i3] = '8')
        OR (b[i3] = '9')
        OR (b[i3] = '0') THEN

das is ja brutal viel code...
wollt net klugscheissern, aber fuer die zukunft, das geht viel kuerzer:

Delphi-Quellcode:
if edit1.text[1] in ['0'..'9'] then...

Deadinpac 8. Mai 2005 16:42

Re: Strings Zerlegen zum 1000 mal^^
 
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

JasonDX 8. Mai 2005 16:46

Re: Strings Zerlegen zum 1000 mal^^
 
Zitat:

Zitat von Deadinpac
hier der Aktuelle QT
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
//...
  for i := 0 to Memo1.Lines.Count do //Alle Einträge durchgehen
//...

Und das klappt?? :shock:

St.Pauli 8. Mai 2005 16:51

Re: Strings Zerlegen zum 1000 mal^^
 
Zitat:

Zitat von Chimaira
PS: nicht Memo1.Lines.Count sondern .Count - 1 ;)

Hatte vergessen, dass hier zu beherzigen, läuft aber trotzdem einwandfrei... :oops: :gruebel: :oops: :gruebel:

Deadinpac 8. Mai 2005 18:48

Re: Strings Zerlegen zum 1000 mal^^
 
Liste der Anhänge anzeigen (Anzahl: 2)
Nagut nach ausführlichen testen ist mir trozdem was aufgefallen

Das Programm ignoriert mich

alle namen nimmt er bis auf meinen

http://51.by-me.de/sf.jpg

08.05.05 - 18:23: Fin legt 213664 € in das Schliessfach.
08.05.05 - 17:05: Sven legt 1586 € in das Schliessfach.
08.05.05 - 17:03: addi legt 1526 € in das Schliessfach.
08.05.05 - 15:29: Sven legt 13736 € in das Schliessfach.
08.05.05 - 15:22: Seti nimmt sich 52000 € aus dem Schliessfach.
08.05.05 - 15:21: Nemesis legt 10000 € in das Schliessfach.
08.05.05 - 15:00: Seti nimmt sich 82000 € aus dem Schliessfach.
08.05.05 - 14:23: DragonHeart legt 1172 € in das Schliessfach.
08.05.05 - 14:15: Seti beseitigt das Logbuch.

Und Noch Was Komisches

Bei der Log sagt er mir das " kein Integerwert ist aber es ist doch das gleiche wie oben nur andere namen und beträge????

08.05.05 - 18:23: Deadinpac legt 204 € in das Schliessfach.
08.05.05 - 15:32: Deadinpac legt 12952 € in das Schliessfach.
08.05.05 - 15:31: Deadinpac nimmt sich 15000 € aus dem Schliessfach.
08.05.05 - 14:08: Steffan legt 411 € in das Schliessfach.
08.05.05 - 14:04: stylo_bommel legt 49 € in das Schliessfach.
08.05.05 - 14:03: stylo_bommel nimmt sich 250 € aus dem Schliessfach.
08.05.05 - 11:52: Deadinpac legt 578 € in das Schliessfach.
08.05.05 - 10:40: Deadinpac legt 95 € in das Schliessfach.
08.05.05 - 00:01: Deadinpac beseitigt das Logbuch.

Aber Sonst klappt alles :-)

MFG
Deadinpac

JasonDX 8. Mai 2005 19:43

Re: Strings Zerlegen zum 1000 mal^^
 
Wegen dem '' ist kein gültiger Integerwert: Stell die eigenschaft WordWrap deines Memo auf false ;)
[edit]
oops, falsch [edit2]oder auch nich... :lol: [/edit2]
der fehler kommt, weil der algo die Option des Beseitigens nicht kennt ;)
[/edit]


Aber der Algorithmus hat noch ne kleine schwachstelle:
Probier das einfache (gültige) log:
Geld.txt

08.05.05 - 18:23: legtheresia nimmt sich 213664 € aus dem Schliessfach.
;)

Deadinpac 8. Mai 2005 19:51

Re: Strings Zerlegen zum 1000 mal^^
 
Gut das mit den Wordwarb war das Problem

aber was meinst du damit ich steigt da jetzt nicht durch was du mir damit sagen willst
Zitat:

Aber der Algorithmus hat noch ne kleine schwachstelle:
Probier das einfache (gültige) log:
weil bei den zweiten lässt er Stylo_Bommel weg

MFG
Deadinpac

JasonDX 8. Mai 2005 20:05

Re: Strings Zerlegen zum 1000 mal^^
 
Zitat:

Zitat von Deadinpac
aber was meinst du damit ich steigt da jetzt nicht durch was du mir damit sagen willst
Zitat:

Aber der Algorithmus hat noch ne kleine schwachstelle:
Probier das einfache (gültige) log:
weil bei den zweiten lässt er Stylo_Bommel weg

MFG
Deadinpac

Damit will ich sagen: Der algo könnte dir in der Form noch Probleme bereiten ;)

Wie gesagt, warum er einen Namen auslässt, hab ich noch nicht entdeckt

Deadinpac 8. Mai 2005 23:53

Re: Strings Zerlegen zum 1000 mal^^
 
Danke Chimaira das du dir auch Fremde QTs anguckst um mir zu Helfen
ihr seit wirklich nett

MFG
Deadinpac


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz