Delphi-PRAXiS

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)

Deadinpac 7. Mai 2005 15:14


Strings Zerlegen zum 1000 mal^^
 
Moin DPlers

Ich habe folgende Frage habe in der suche wohl falsche begriffe eingegeben so das ich nicht das richtige gefunden habe ich habe folgende frage

ich möchte strings oder ganze memos zerlegen und wörter raussotieren

im memo stehen sie so

12.12.2004 09:34:59 XXX nimmt sich XXX € Aus den Schliessfach
12.12.2004 08:12:45 XXX Legt XXX € ins Schliessfach
12.12.2004 07:28:38 XXX beseitigt das Schliessfach

und ich möchte aus diesen Log immer die XXX rausholen nur es sind keine trennzeichen gegeben

vllt hat ja jemand von euch ein code schnipsel übrig oder weiss mit welchen suchbegriffen ich das richtige finden kann oder event. ein deutsches tutorial

mfg
deadinpac

Ultimator 7. Mai 2005 15:25

Re: Strings Zerlegen zum 1000 mal^^
 
[oh]copy, pos, delete[/oh]

Hierzu dürfte auch die Suche was hergeben.
Frohes Schaffen ;)

mirage228 7. Mai 2005 15:26

Re: Strings Zerlegen zum 1000 mal^^
 
Oder vielleicht kannst Du auch etwas mit [dp="reguläre Ausdrücke"]Regulären Ausdrücken[/dp] anfangen. Die sind in Deinem Fall vielleicht auch ganz nützlich.

mfG
mirage228

Duffy 7. Mai 2005 15:41

Re: Strings Zerlegen zum 1000 mal^^
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Deadinpac,
meinst Du das zerlegen so?

bye
Claus

Deadinpac 7. Mai 2005 16:08

Re: Strings Zerlegen zum 1000 mal^^
 
Danke an alle das ihr so schnell gepostet habt :-)

und Danke Duffy für dein Demo so ist das schon ganz gut so bräuchte ich mir ja nur die passende zeile rausfischen so das ich das dann so habe

XXX = XXX €

aber ich guck mir erstmal den quelltext an

mfg
deadinpac

St.Pauli 7. Mai 2005 16:42

Re: Strings Zerlegen zum 1000 mal^^
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, Duffy war schneller, aber wegschmeißen wollt ich es nicht.

Delphi-Quellcode:

procedure TForm1.Button1Click(Sender: TObject);
VAR i, i2, i3 : integer;
    a, b, c : string;
    ende : boolean;
begin
 
//Dient nur als Beispiel - änder Lines.Add um in LoadFromFile
  Memo1.Lines.Add('12.12.2004 09:34:59 XXX nimmt sich 500000 € Aus den Schliessfach');
  Memo1.Lines.Add('12.12.2004 08:12:45 XXX Legt 565656 € ins Schliessfach');
  Memo1.Lines.Add('12.12.2004 07:28:38 Horst beseitigt das Schliessfach');


  for i := 0 to Memo1.Lines.Count do
    begin
     a := '';
     i2 := 20; //startet hinter dem datum
     b := Memo1.Lines[i];
     ende := False;
    while (i2 <= Length(b)) do
      begin
      i2 := i2 + 1;
          IF ((b[i2] = ' ') = false) AND (ende = False) THEN
            begin
              a := a + b[i2];
            end;
          IF (b[i2] = ' ') THEN ende := True; //Wenn b[i2] kein Buchstabe mehr ist bedeutet das, dass der name zuende ist.
      end;

   ende := False;

    IF ((a = '') = false) THEN a := a + ' = '; //Falls nichts gefunden wurde auch nicht dazu tun
   
    i3 := 20; //Startet wieder hinter dem Datum

    while i3 < Length(b) do
      begin
        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
          begin
            a := a + b[i3];
         end;
        IF (b[i2] = ' ') THEN ende := True; //Wenn leerzeichen dann wieder beenden
        i3 := i3 + 1;
      end;

      IF ((a = '') = false) THEN a := a + ' €';
        Memo2.Lines.Add(a);
     end;
end;

end.

Deadinpac 7. Mai 2005 16:55

Re: Strings Zerlegen zum 1000 mal^^
 
Danke St.Pauli für deine Arbeit

So habs mir mal angeguckt und es macht genau das was es machen soll

wäre es denn auch möglich den code so zu verändern das er es auch gleich ausrechnet?

d.h wenn die liste so aussieht

07.05.05 - 17:00: SweetBini legt 1023 € in das Schliessfach.
07.05.05 - 16:59: SweetBini nimmt sich 1000 € aus dem Schliessfach.
07.05.05 - 16:42: stylo_muetze nimmt sich 1600 € aus dem Schliessfach.
07.05.05 - 16:40: stylo_muetze nimmt sich 4000 € aus dem Schliessfach.
07.05.05 - 16:39: stylo_muetze legt 169 € in das Schliessfach.
07.05.05 - 15:01: Deadinpac legt 220 € in das Schliessfach.
07.05.05 - 14:59: stylo_bommel legt 99 € in das Schliessfach.
07.05.05 - 14:52: stylo_bommel nimmt sich 400 € aus dem Schliessfach.
07.05.05 - 14:51: stylo_bommel nimmt sich 4000 € aus dem Schliessfach.
07.05.05 - 14:23: Hippi4Slim legt 1 € in das Schliessfach.
07.05.05 - 14:23: Hippi4Slim legt 1 € in das Schliessfach.
07.05.05 - 14:23: Hippi4Slim legt 1 € in das Schliessfach.
07.05.05 - 14:23: Hippi4Slim legt 1 € in das Schliessfach.
07.05.05 - 14:23: Hippi4Slim legt 1 € in das Schliessfach.
07.05.05 - 14:23: Hippi4Slim legt 1 € in das Schliessfach.
07.05.05 - 14:23: Hippi4Slim legt 1 € in das Schliessfach.
07.05.05 - 14:23: Hippi4Slim legt 1 € in das Schliessfach.
07.05.05 - 14:23: Hippi4Slim legt 1337 € in das Schliessfach.
07.05.05 - 14:03: Steffan legt 207 € in das Schliessfach.

das er es gleich zusammen rechnet das es dann so aussieht

Steffan = 207 €
Hippi4Slim = 1345 €
Stylo_Bommel = - 4301 €
Deadinpac = 220 €
Stylo_Muetze = - 5431 €
SweetBini = 23 €


mfg
deadinpac

Deadinpac 7. Mai 2005 18:32

Re: Strings Zerlegen zum 1000 mal^^
 
So was mir gerade noch aufgefallen ist ist das bei Hippi4Slim immer eine 4 dranhängt

also anstatt von 1 € schreibt er 41 €

und der qt von St.pauli ist wohl gut aber ich checkt denn irgendwie nicht ganz :-(

vllt könnt ihr mir noch ein paar tips geben wäre nett

mfg
deadinpac

ggfan 7. Mai 2005 18:40

Re: Strings Zerlegen zum 1000 mal^^
 
Liste der Anhänge anzeigen (Anzahl: 1)
Probier mal das hier aus.
Das Programm teilt einen Satz bei den Leerzeichen auf.

Michael Leyhe 7. Mai 2005 19:49

Re: Strings Zerlegen zum 1000 mal^^
 
Wenn nach dem XXX immer ein €uro-Zeichen steht, dann kann man mit pos dieses Zeichen suchen und dann alle Zahlen die davor stehen auslesen.

Zitat:

Zitat von Deadinpac
So was mir gerade noch aufgefallen ist ist das bei Hippi4Slim immer eine 4 dranhängt

Dazu muss ich deinen Code sehen um genaueres festzustellen, aber ich vermute mal, dass die 4 aus dem Namen Hippi4Slim kommt.

DP-Maintenance 7. Mai 2005 20:07

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Es geht doch um Delphi. Warum dann nich auch in eine Delphi-Sparte? ;-)

JasonDX 7. Mai 2005 20:37

Re: Strings Zerlegen zum 1000 mal^^
 
ich hab mir die anderen Codes nicht angeschaut, aber relativ kurz geht das so:
Delphi-Quellcode:
var zeile, who: string;
    money, Factor, i: integer;
begin
  Zeile := Edit1.Text;
  delete(zeile, 1, pos(': ', Zeile) + 1);
  who := copy(zeile, 1, pos(' ', Zeile) - 1);
  delete(zeile, 1, pos(' ', Zeile));
  case zeile[1] of
    'n': Factor := -1; //nimmt sich
    'l': Factor := 1; //legt hinein
    'b': Factor := 0; //beseitigt
  end;
  for i := 0 to ord(Factor < 0) do
    delete(Zeile, 1, pos(' ', Zeile));
  TryStrToInt(copy(Zeile, 1, pos(' ', Zeile) - 1), money);
  money := money * Factor;
in who steht dann wer, und in money wieviel, also positiv wenn was reingelegt, und negativ wenn was rausgenommen

doom98 7. Mai 2005 21:39

Re: Strings Zerlegen zum 1000 mal^^
 
Äh hi

ich will ja nicht stören aber ich hab auch ein String Problem*g

Inhalt: String;

Inhalt ist ein String der genau zwei unterschiedliche Wörter in sich trägt wobei das erste bekannt ist (zb high) aber das zweite immer anderst ist.
Aber ich muss jetzt irgendwie aus dem Inhalt String das zweite Wort wieder in einen eigenen String packen.

Wie bekomme ich das hin?

Inhalt zb = 'high XXX'

string2:= 'XXX' // also string2 soll dann xxx in sich haben.

Mfg
Doomy

JasonDX 7. Mai 2005 21:45

Re: Strings Zerlegen zum 1000 mal^^
 
Also, du hast in Inhalt deinen string stehn
Delphi-Quellcode:
Inhalt := 'high xxx';
dann musst du eigentlich nur alles bis zum leerzeichen weglöschen, und schon steht in Inhalt dein 'xxx'

Delphi-Quellcode:
delete(Inhalt , 1, pos(' ', zeile));

Wuaegner 7. Mai 2005 21:49

Re: Strings Zerlegen zum 1000 mal^^
 
oder so:
Delphi-Quellcode:
var str,strzwei: string;
begin
 str:= 'XXX test';
 strzwei:= copy(str,5,length(str)-4);
 Showmessage(strzwei);
end;

doom98 7. Mai 2005 22:06

Re: Strings Zerlegen zum 1000 mal^^
 
das prob is weiß ja nicht wie lange test ist btw was überhaupt test sein wird... aber trotzdem danke

Wuaegner 7. Mai 2005 22:27

Re: Strings Zerlegen zum 1000 mal^^
 
Zitat:

das prob is weiß ja nicht wie lange test ist btw was überhaupt test sein wird... aber trotzdem danke
das musst du bei meiner möglichkeit auch nicht :zwinker:

St.Pauli 7. Mai 2005 22:46

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

PS: Hoffe es gehts

JasonDX 7. Mai 2005 23:11

Re: Strings Zerlegen zum 1000 mal^^
 
wieso so kompliziert? ;)

Delphi-Quellcode:

procedure MachDasDingsda;
var
  NamensListe: array of string;
  GeldListe: array of integer;
  function Index(von: string): integer; //Die ganze funktion nur um die namen zu organisieren, ging sicher noch einfacher
  var
    i: integer;
  begin
    result := -1;
    for i := 0 to high(NamensListe) do
      if von = NamensListe[i] then
        result := i;
    if result < 0 then begin
      result := length(NamensListe);
      setLength(NamensListe, result + 1);
      NamensListe[result] := von;
      setLength(GeldListe, result + 1);
      GeldListe[result] := 0;
    end;
  end;
var zeile, who: string;
    money, Factor, i, j, ind: integer;
begin
  for j := 0 to Memo1.Lines.Count - 1 do begin //Für jede zeile
    zeile := Memo1.Lines[j]; //alles rausparsen
    delete(zeile, 1, pos(': ', Zeile) + 1);
    who := copy(zeile, 1, pos(' ', Zeile) - 1);
    delete(zeile, 1, pos(' ', Zeile));
    case zeile[1] of
      'n': Factor := -1; //nimmt sich
      'l': Factor := 1; //legt hinein
      'b': Factor := 0; //beseitigt
    end;
    for i := 0 to ord(Factor < 0) do
      delete(Zeile, 1, pos(' ', Zeile));
    TryStrToInt(copy(Zeile, 1, pos(' ', Zeile) - 1), money);
    ind := Index(who);
    GeldListe[ind] := GeldListe[ind] + money * Factor; //und ausrechnen
  end;
end;
dürfte auch klappen

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

//Edit: Namensliste, nicht Namesliste... sch*** schreibfehler :wall:
@Deadinpac: Jetzt dürfts ohne Fehler klappen

Deadinpac 8. Mai 2005 12:04

Re: Strings Zerlegen zum 1000 mal^^
 
Danke das ihr euch Soviel Arbeit macht nur für mich :-D

Nur entweder bin ich zu blöd oder die QT klappen nicht :wall:

weil bei St.Pauli der Rechnet nicht zusammen so wie ich es gesehen habe

und bei Chimaira kommt der fehler das die Namesliste nicht definiert ist

weil ich meine das so wie es hier funkt
http://www.swnews.de/?sw=logberechner

08.05.05 - 11:44: Lazyboy legt 8767 € in das Schliessfach.
08.05.05 - 11:39: FireFox legt 11299 € in das Schliessfach.
08.05.05 - 11:21: Threepwood legt 5142 € in das Schliessfach.
08.05.05 - 10:39: Sven legt 6489 € in das Schliessfach.
08.05.05 - 10:16: DragonHeart legt 490 € in das Schliessfach.
08.05.05 - 10:04: Seti legt 39717 € in das Schliessfach.
08.05.05 - 09:28: Nemesis legt 11000 € in das Schliessfach.
08.05.05 - 08:25: Erpel legt 6706 € in das Schliessfach.
08.05.05 - 02:24: Reins legt 2554 € in das Schliessfach.
08.05.05 - 01:14: chrissss legt 2219 € in das Schliessfach.
08.05.05 - 00:31: Lazyboy legt 150000 € in das Schliessfach.
08.05.05 - 00:19: addi legt 2255 € in das Schliessfach.
07.05.05 - 23:05: Omikr0n legt 10000 € in das Schliessfach.
07.05.05 - 21:55: DragonHeart legt 2570 € in das Schliessfach.
07.05.05 - 21:34: Milchtrinker legt 1245 € in das Schliessfach.
07.05.05 - 21:23: Toby legt 1754 € in das Schliessfach.
07.05.05 - 20:50: addi legt 2754 € in das Schliessfach.
07.05.05 - 20:09: Duddits legt 1417 € in das Schliessfach.
07.05.05 - 20:05: GUnit legt 25000 € in das Schliessfach.
07.05.05 - 19:56: Atze legt 9658 € in das Schliessfach.
07.05.05 - 19:45: Toby legt 9964 € in das Schliessfach.
07.05.05 - 19:02: Sven legt 464 € in das Schliessfach.
07.05.05 - 15:12: Nemesis legt 17000 € in das Schliessfach.
07.05.05 - 15:09: Toby legt 5240 € in das Schliessfach.
07.05.05 - 14:55: DragonHeart legt 2483 € in das Schliessfach.
07.05.05 - 14:18: chrisimausi legt 1287 € in das Schliessfach.
07.05.05 - 13:35: Milchtrinker legt 17645 € in das Schliessfach.
07.05.05 - 10:29: Erpel legt 112 € in das Schliessfach.
07.05.05 - 09:18: Nemesis legt 31000 € in das Schliessfach.
07.05.05 - 01:36: Lazyboy legt 8767 € in das Schliessfach.
07.05.05 - 01:08: Threepwood legt 5794 € in das Schliessfach.
07.05.05 - 01:01: Sven legt 1242 € in das Schliessfach.
07.05.05 - 00:03: Erpel legt 1271 € in das Schliessfach.
06.05.05 - 23:47: Sven legt 3014 € in das Schliessfach.
06.05.05 - 23:27: Erpel legt 611 € in das Schliessfach.
06.05.05 - 23:10: Erpel legt 784 € in das Schliessfach.
06.05.05 - 22:57: Erpel legt 254 € in das Schliessfach.
06.05.05 - 22:54: Erpel legt 392 € in das Schliessfach.


MFG

Deadinpac

doom98 8. Mai 2005 12: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 13: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 17: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 17: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 17: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 19: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 20: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 20: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 21: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 9. Mai 2005 00: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 20:07 Uhr.

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 by Thomas Breitkreuz