![]() |
mehrere zahlen aus einen string filtern?
also erstmal das string beispiel;
---------------String------------------------------------------ Wort1 (30) text text texttext text texttext text texttext text text text texttext text texttext text texttext text text text text texttext text texttext text texttext text text text text texttext text texttext text texttext text text wort2 (26) text text texttext text texttext text texttext text text text text texttext text texttext text texttext text text text text texttext text texttext text texttext text text wort4 (15) text text texttext text texttext text texttext text text text text texttext text texttext text texttext text text text text texttext text texttext text texttext text text ----------------String------------------------------------------ so nun möchte ich das die zahl bei wort1(das sind immer sone ar schlüsselwörter also die zahlen stehen immer neben den selben wörtern) in das edit1 feld rein kommt die zahl neben dem wort2 in das 2te edit feld usw nun wollte ich fragen wie man sowas am besten macht? |
Re: mehrere zahlen aus einen string filtern?
Mit
![]() ![]() Du hast nur ein Problem: Nämlich wenn im Text auch Klammern vorkommen. Du könntest höchstens überprüfen, ob kurz hinter dem Wort "wort" die Klammer kommt. |
Re: mehrere zahlen aus einen string filtern?
|
Re: mehrere zahlen aus einen string filtern?
hallo,
ich hatte grad zeit, darum hab ich mal ein bisschen gecodet... ich denke es gibt schönere methoden, aber sie muss ja nicht mehr als funktionieren... hier der code der dabei entstanden ist:
Delphi-Quellcode:
wichtig ist, dass wortx immer klein geschrieben ist. oder falls es gross sein soll musst du alle "wort" im code auch gross schreiben
procedure TForm1.Button1Click(Sender: TObject);
var i, max: integer; s, text: string; begin text := // der text der durchsucht werden muss max := // wieviele edits gibts? oder: wieviele "wortx" gibts? s := text; for i:=1 to max do if pos('wort'+inttostr(i), s) <> 0 then begin delete(s, 1, pos('wort'+inttostr(i), s)+length('wort'+inttostr(i))+1); delete(s, pos(')', s), length(s)); (findcomponent('Edit'+inttostr(i)) as TEdit).text := s; s := text; end; end; gruss urbanbruhin |
Re: mehrere zahlen aus einen string filtern?
guten tag ich habe das jetzt anders gelöst aber damit habe ich ein problen was eigentlich nicht sein dürfte
Delphi-Quellcode:
mein problem es wird alles sehr schön eingelesen bis Sensorphalanx :?:
procedure TForm1.Button68Click(Sender: TObject);
var Pla : integer; geb,fleet,def,StrZahl : string; i,posWort,posklam : integer; begin Pla := Strtointdef(CBPL.Text,0); if (pla <1) and (pla>9) then begin showmessage('Ungültiger Planet'); exit; end; if CBMond.Checked = true then begin geb:=memogeb.text; //fleet:=memofleet.text; //def:=memodef.text; {----A--------------------Gebäude-----------------------------} if geb <>'' then begin /////////////////////////////////////////////////////// PosWort:=pos('Roboterfabrik',geb); PosKlam:=pos(')',geb); if (PosWort<>0) and ((PosKlam-PosWort)<50) then begin for i := PosWort to PosKlam do begin If geb[i] in ['0','1','2','3','4','5','6','7','8','9'] Then Strzahl:= StrZahl+geb[i]; end; (findcomponent('edtpl'+inttostr(pla)+'mrobf') as TEdit).text :=Strzahl ; delete(geb,(pos(')',geb)),(pos(')',geb))+1); Strzahl:=''; end; /////////////////////////////////////////// PosWort:=pos('Raumschiffwerft',geb); PosKlam:=pos(')',geb); if (PosWort<>0) and ((PosKlam-PosWort)<50) then begin for i := PosWort to PosKlam do begin If geb[i] in ['0','1','2','3','4','5','6','7','8','9'] Then Strzahl:= StrZahl+geb[i]; end; (findcomponent('edtpl'+inttostr(pla)+'mraumw') as TEdit).text :=Strzahl ; delete(geb,(pos(')',geb)),(pos(')',geb))+1); Strzahl:=''; end; /////////////////////////////////////////////////////// PosWort:=pos('Metallspeicher',geb); PosKlam:=pos(')',geb); if (PosWort<>0) and ((PosKlam-PosWort)<50) then begin for i := PosWort to PosKlam do begin If geb[i] in ['0','1','2','3','4','5','6','7','8','9'] Then Strzahl:= StrZahl+geb[i]; end; (findcomponent('edtpl'+inttostr(pla)+'mmets') as TEdit).text :=Strzahl; delete(geb,(pos(')',geb)),(pos(')',geb))+1); Strzahl:=''; end; /////////////////////////////////////////////////////// PosWort:=pos('Kristallspeicher',geb); PosKlam:=pos(')',geb); if (PosWort<>0) and ((PosKlam-PosWort)<50) then begin for i := PosWort to PosKlam do begin If geb[i] in ['0','1','2','3','4','5','6','7','8','9'] Then Strzahl:= StrZahl+geb[i]; end; (findcomponent('edtpl'+inttostr(pla)+'mkriss') as TEdit).text :=Strzahl; delete(geb,(pos(')',geb)),(pos(')',geb))+1); Strzahl:=''; end; /////////////////////////////////////////////////////// PosWort:=pos('Deuteriumtank',geb); PosKlam:=pos(')',geb); if (PosWort<>0) and ((PosKlam-PosWort)<50) then begin for i := PosWort to PosKlam do begin If geb[i] in ['0','1','2','3','4','5','6','7','8','9'] Then Strzahl:= StrZahl+geb[i]; end; (findcomponent('edtpl'+inttostr(pla)+'mdeuts') as TEdit).text :=Strzahl; delete(geb,(pos(')',geb)),(pos(')',geb))+1); Strzahl:=''; end; /////////////////////////////////////////////////////// PosWort:=pos('Mondbasis',geb); PosKlam:=pos(')',geb); if (PosWort<>0) and ((PosKlam-PosWort)<50) then begin for i := PosWort to PosKlam do begin If geb[i] in ['0','1','2','3','4','5','6','7','8','9'] Then Strzahl:= StrZahl+geb[i]; end; (findcomponent('edtpl'+inttostr(pla)+'mmon') as TEdit).text :=Strzahl; delete(geb,(pos(')',geb)),(pos(')',geb))+1); Strzahl:=''; end; /////////////////////////////////////////////////////// PosWort:=pos('Sensorphalanx',geb); PosKlam:=pos(')',geb); if (PosWort<>0) and ((PosKlam-PosWort)<100) then begin for i := PosWort to PosKlam do begin If geb[i] in ['0','1','2','3','4','5','6','7','8','9'] Then Strzahl:= StrZahl+geb[i]; end; (findcomponent('edtpl'+inttostr(pla)+'mSen') as TEdit).text :=Strzahl; delete(geb,(pos(')',geb)),(pos(')',geb))+1); Strzahl:=''; end; /////////////////////////////////////////////////////// PosWort:=pos('Sprungtor',geb); PosKlam:=pos(')',geb); if (PosWort<>0) and ((PosKlam-PosWort)<50) then begin for i := PosWort to PosKlam do begin If geb[i] in ['0','1','2','3','4','5','6','7','8','9'] Then Strzahl:= StrZahl+geb[i]; end; (findcomponent('edtpl'+inttostr(pla)+'mst') as TEdit).text :=Strzahl; delete(geb,(pos(')',geb)),(pos(')',geb))+1); Strzahl:=''; end; /////////////////////////////////////////////////////// end; {----A--------------------Gebäude-----------------------------} end; end; hir ist der string dazu: -------------------------------------------------------------------------------------------------- Roboterfabrik (Stufe 2) Roboterfabriken stellen einfache Arbeitskräfte zur Verfügung, die beim Bau der planetaren Infrastruktur eingesetzt werden können. Jede Stufe erhöht damit die Geschwindigkeit des Ausbaus von Gebäuden. Benötigt: Metall:1.600 Kristall:480 Deuterium:800 Produktionsdauer: 16m 38s Ausbau auf Stufe 3 Raumschiffwerft (Stufe 5) In der planetaren Werft werden alle Arten von Schiffen und Verteidigungsanlagen gebaut. Benötigt: Metall:12.800 Kristall:6.400 Deuterium:3.200 Produktionsdauer: 2h 33m 36s Ausbau auf Stufe 6 Metallspeicher Lagerstätte für unbearbeitete Metallerze bevor sie weiter verarbeitet werden. Benötigt: Metall:2.000 Kristall:0 Produktionsdauer: 16m 00s bauen Kristallspeicher Lagerstätte für unbearbeitetes Kristall bevor es weiter verarbeitet wird. Benötigt: Metall:2.000 Kristall:1.000 Produktionsdauer: 24m 00s bauen Deuteriumtank Riesige Tanks zur Lagerung des neu gewonnenen Deuteriums. Benötigt: Metall:2.000 Kristall:2.000 Produktionsdauer: 32m 00s bauen Mondbasis (Stufe 4) Ein Mond verfügt über keinerlei Atmosphäre, deshalb muss vor der Besiedlung eine Mondbasis errichtet werden. Benötigt: Metall:320.000 Kristall:640.000 Deuterium:320.000 Produktionsdauer: 5 Tage 8h 00m 00s Ausbau auf Stufe 5 Sensorphalanx (Stufe 1) Die Sensorphalanx erlaubt es Flottenbewegungen zu beobachten. Je höher die Ausbaustufe, desto größer die Reichweite der Phalanx. Benötigt: Metall:40.000 Kristall:80.000 Deuterium:40.000 Produktionsdauer: 16h 00m 00s ---------------------------------------------------------------------------------------------------- könnte einer wissen warum? |
Re: mehrere zahlen aus einen string filtern?
SScanF() google ist euer freund
|
Re: mehrere zahlen aus einen string filtern?
Zitat:
Wenn nein -> ..... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:05 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