![]() |
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? ;-) |
Re: Strings Zerlegen zum 1000 mal^^
ich hab mir die anderen Codes nicht angeschaut, aber relativ kurz geht das so:
Delphi-Quellcode:
in who steht dann wer, und in money wieviel, also positiv wenn was reingelegt, und negativ wenn was rausgenommen
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; |
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 |
Re: Strings Zerlegen zum 1000 mal^^
Also, du hast in Inhalt deinen string stehn
Delphi-Quellcode:
dann musst du eigentlich nur alles bis zum leerzeichen weglöschen, und schon steht in Inhalt dein 'xxx'
Inhalt := 'high xxx';
Delphi-Quellcode:
delete(Inhalt , 1, pos(' ', zeile));
|
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; |
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
|
Re: Strings Zerlegen zum 1000 mal^^
Zitat:
|
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:
Bei Fragen schick mir einfach ne PN. :wink:
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)); PS: Hoffe es gehts |
Re: Strings Zerlegen zum 1000 mal^^
wieso so kompliziert? ;)
Delphi-Quellcode:
dürfte auch klappenprocedure 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; PS: nicht Memo1.Lines.Count sondern .Count - 1 ;) //Edit: Namensliste, nicht Namesliste... sch*** schreibfehler :wall: @Deadinpac: Jetzt dürfts ohne Fehler klappen |
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 ![]() 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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 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-2025 by Thomas Breitkreuz