Autor |
Beitrag |
Bronstein
      
Beiträge: 578
Erhaltene Danke: 1
WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
|
Verfasst: Sa 13.03.04 17:44
habe einen string (die Telefonnummer lautet: 2345). Jetzt möchte ich prüfen ob dieser String einen bestimmten eintrag besitzt.
Also wenn in dem String die Nummer 2345 steht soll es mir das per showmessage anzeigen. Ansosten soll es nichts tun
Moderiert von Peter Lustig: Thema verschoben
_________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
|
|
BungeeBug
      
Beiträge: 901
|
Verfasst: Sa 13.03.04 18:09
Hi,
einfach so :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure find_str(source , mask : string); begin IF pos(source,mask) <> 0 THEN BEGIN ShowMessage('String :'+mask+' an Position : '+IntToStr(Pos(source,mask))+' gefunden');# END; end; |
|
|
Bronstein 
      
Beiträge: 578
Erhaltene Danke: 1
WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
|
Verfasst: Mo 15.03.04 18:29
das funktioniert nicht
_________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
|
|
MaxiTB
      
Beiträge: 679
Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
|
Verfasst: Mo 15.03.04 19:13
Was soll da nicht funktionieren ?
Ist doch richtig ...
Ich denke mal, du solltest posten was du machst, wenn du schon sowas behauptest, weil bei so einem einfach Aufruf machst scheinbar du was falsch !
Hast du überhaupt schon mal reindebugt ? Was kommt als input (Übergabeparameter) / was liefert Pos ?
_________________ Euer Mäxchen
Wer früher stirbt, ist länger tot.
|
|
StefanH
      
Beiträge: 1144
Win XP
D5 Standard, D7 Pers, D2005 Pers
|
Verfasst: Mo 15.03.04 20:46
es geht nicht, weil es
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure find_str(source , mask : string); begin IF pos(mask,source) <> 0 THEN BEGIN ShowMessage('String :'+mask+' an Position : '+IntToStr(Pos(source,mask))+' gefunden');# END; end; |
mask, source heißen muss.
_________________ "Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
|
|
Bronstein 
      
Beiträge: 578
Erhaltene Danke: 1
WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
|
Verfasst: Di 16.03.04 18:18
Wenn die Zahl in diesem string mehrmals vorkommt, soll er mir einen Zähler um eins erhöhen, bis jetzt sucht er nur ob die Zahl vorkommt, aber nicht wie oft.
dies ist ein Beispiel string:
Delphi-Quelltext 1: 2:
| var a :string; a := 'die Telefonnummer lautet: 2345 text 2345 text 2345' |
im hier genannten Beipiel kommt die Zahl drei mal vor, also soll der Zaehler auch auf drei gesetzt werden.
vielleicht hat jemand eine Idee wie ich das Lösen kann
_________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 16.03.04 19:09
Hallo!
Schau Dir mal PosEx an. Damit geht das. Einfach die letzte Fundstelle plus Eins als Offset einsetzen.
MfG
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Bronstein 
      
Beiträge: 578
Erhaltene Danke: 1
WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
|
Verfasst: Di 16.03.04 20:26
PosEx gibt es in meiner Delphi Hilfe nicht (Borland Delphi 6)
habe folgende Datei mit dem Inhalt:
Zitat: | 2;24.05.2003;1111111111;2;24.05.2003;1111111111;
2;24.05.2003;1111111111;2;24.05.2003;1111111111;
2;24.05.2003;1111111111;2;24.05.2003;1111111111;
2;24.05.2003;1111111111;2;24.05.2003;1111111111;
2;24.05.2003;1111111111;2;24.05.2003;1111111111;
2;24.05.2003;2222222222;2;24.05.2003;2222222222;
2;24.05.2003;2222222222;2;24.05.2003;2222222222;
2;24.05.2003;2222222222;2;24.05.2003;2222222222;
2;24.05.2003;2222222222;2;24.05.2003;2222222222;
2;24.05.2003;2222222222;2;24.05.2003;2222222222;
2;24.05.2003;3333333333;2;24.05.2003;3333333333;
2;24.05.2003;3333333333;2;24.05.2003;3333333333;
2;24.05.2003;3333333333;2;24.05.2003;3333333333;
2;24.05.2003;3333333333; |
Möchte jetzt immer den letzten Datensatz prüfen, ob die Serienummer 10 mal vorkommt, in diesem Beispiel ist dies der Fall bei den Serienummern 1111111111 und 2222222222.
Die 3333333333 kommt aber nur 7 mal vor, jetzt soll die Funktion alles mit der Serienummer 3333333333 löschen und die Serienummer 2222222222 speichern in einer Stringvariable spreichern
_________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
Zuletzt bearbeitet von Bronstein am Di 16.03.04 21:15, insgesamt 1-mal bearbeitet
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 16.03.04 20:32
Ob das in Delphi 6 noch nicht dabei ist, weiß ich leider nicht. Zur Not musst Du Dir eine solche Funktion selbst schreiben. Aber das ist ja auch nicht soooo schwer.
Zitat: | Die 3333333333 kommt aber nur 7 mal vor, jetzt soll die Funktion alles mit der Serienummer 3333333333 löschen und die Serienummer 2222222222 speichern in einer Stringvariable spreichern |
Entschuldigung. Ich verstehe leider nicht ganz, was Du meinst ... 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Bronstein 
      
Beiträge: 578
Erhaltene Danke: 1
WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
|
Verfasst: Di 16.03.04 20:45
Wenn eine Serienummer nicht 10 mal in der Datei vorkommt soll diese herrausgelöscht werden, da in diesem Beipiel die 3333333333 nicht 10 mal vorkommt sondern nur 7 mal soll das gelöscht werden also alle Zeilen mit der 3333333333 gelöscht werden.
_________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 16.03.04 21:02
 Ah!
Sind die immer so Blockweise abgelegt, oder kann es sein, dass die verschiedenen Seriennummern gemischt sind?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Bronstein 
      
Beiträge: 578
Erhaltene Danke: 1
WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
|
Verfasst: Di 16.03.04 21:16
Die Serienummer sind nicht gemischt, habe die Blockweise oben nochmal verdeutlicht(siehe oben)
_________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 16.03.04 21:31
Und so etwas kann auch nicht vorkommen?
Zitat: | 2;24.05.2003;2222222222;2;24.05.2003;2222222222;
2;24.05.2003;2222222222;2;24.05.2003;3333333333;
2;24.05.2003;3333333333;2;24.05.2003;3333333333; |
Dann folgender Vorschlag:
1. Du liest die Datei in eine TStringList ein, so dass die Zeilen einzeln vorliegen
2. Die korrekte Anzahl an Nummern kann es nur geben, wenn bei fünf Zeilen in Folge die Nummer gefunden wird (einfach es Pos())
3. Man muss noch herausfinden, ob in der letzten Zeile auch wirklich zwei Nummern stehen. Das macht man am Besten über eine Längenabfrage.
Dann weißt Du schonmal, ob eine Nummer oft genug vorkommt. Wenn nicht, mit TStringList.Delete die betreffenden Zeilen löschen.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Bronstein 
      
Beiträge: 578
Erhaltene Danke: 1
WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
|
Verfasst: Di 16.03.04 21:53
den passenden code hast nicht zufällig jemand.
_________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 16.03.04 21:55
Schreib' ihn doch selber und wenn Du nicht weiter kommst, dann fragst Du hier nach. 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|