Autor Beitrag
Bronstein
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: 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 user profile iconPeter Lustig: Thema verschoben

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
BungeeBug
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 901



BeitragVerfasst: Sa 13.03.04 18:09 
Hi,

einfach so :

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: Mo 15.03.04 18:29 
das funktioniert nicht

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
MaxiTB
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: Mo 15.03.04 20:46 
es geht nicht, weil es

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: 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:

ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 16.03.04 21:02 
:think: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: Di 16.03.04 21:53 
den passenden code hast nicht zufällig jemand.

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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".