AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Strings Zerlegen zum 1000 mal^^

Ein Thema von Deadinpac · begonnen am 7. Mai 2005 · letzter Beitrag vom 9. Mai 2005
Antwort Antwort
Seite 2 von 3     12 3      
7. Mai 2005, 20:07
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?
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#12

Re: Strings Zerlegen zum 1000 mal^^

  Alt 7. Mai 2005, 20:37
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
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
doom98

Registriert seit: 18. Feb 2005
18 Beiträge
 
#13

Re: Strings Zerlegen zum 1000 mal^^

  Alt 7. Mai 2005, 21:39
Ä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
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#14

Re: Strings Zerlegen zum 1000 mal^^

  Alt 7. Mai 2005, 21:45
Also, du hast in Inhalt deinen string stehn
Inhalt := 'high xxx'; dann musst du eigentlich nur alles bis zum leerzeichen weglöschen, und schon steht in Inhalt dein 'xxx'

delete(Inhalt , 1, pos(' ', zeile));
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#15

Re: Strings Zerlegen zum 1000 mal^^

  Alt 7. Mai 2005, 21:49
oder so:
Delphi-Quellcode:
var str,strzwei: string;
begin
 str:= 'XXX test';
 strzwei:= copy(str,5,length(str)-4);
 Showmessage(strzwei);
end;
Wuaegner
Gruß Flo
Unternehmensberatung
  Mit Zitat antworten Zitat
doom98

Registriert seit: 18. Feb 2005
18 Beiträge
 
#16

Re: Strings Zerlegen zum 1000 mal^^

  Alt 7. Mai 2005, 22:06
das prob is weiß ja nicht wie lange test ist btw was überhaupt test sein wird... aber trotzdem danke
  Mit Zitat antworten Zitat
Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#17

Re: Strings Zerlegen zum 1000 mal^^

  Alt 7. Mai 2005, 22:27
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
Wuaegner
Gruß Flo
Unternehmensberatung
  Mit Zitat antworten Zitat
Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#18

Re: Strings Zerlegen zum 1000 mal^^

  Alt 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
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#19

Re: Strings Zerlegen zum 1000 mal^^

  Alt 7. Mai 2005, 23:11
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
@Deadinpac: Jetzt dürfts ohne Fehler klappen
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Deadinpac

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

Re: Strings Zerlegen zum 1000 mal^^

  Alt 8. Mai 2005, 12:04
Danke das ihr euch Soviel Arbeit macht nur für mich

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

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
Sven Grimm
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz