Delphi-PRAXiS
Seite 5 von 7   « Erste     345 67      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Procedure in Procedure aufrufen klappt nicht (https://www.delphipraxis.net/172452-procedure-procedure-aufrufen-klappt-nicht.html)

Sir Rufo 5. Jan 2013 13:31

AW: Procedure in Procedure aufrufen klappt nicht
 
Zitat:

Zitat von EMS (Beitrag 1197740)
hallo
doch ich habe einfach in die Text datei nen paar mal das Wort "Test" zegefügt und dann passte
die Anzahl wie oft das Wort "Test" in meiner Textdatei vorkommt.

Logisch, wenn das Wort "Test" genauso häufig vorkommt, wie die Textdatei Zeilen hat, dann kommt das schon hin.

Du solltest dir auch mal ein vernüftiges Testszenario überlegen.
Code:
Test
nur so
oder so
und so
noch ein Test
Test Test Test
Dieser Text liefert bei der Suche nach "Test" 6. Sollte aber 5 sein.
Code:
Test Test Test
Test Test
Dieser Text liefert bei der Suche nach "Test" 2. Sollte aber 5 sein.

Popov 5. Jan 2013 13:36

AW: Procedure in Procedure aufrufen klappt nicht
 
Ganz wichtig - nicht nur "Test Test", sondern auch "TestTest" ohne Leerzeichen. Aber auch "Testest". In dem Fall ist wohl alles in Ordnung, aber je nachdem wie man mit Delete umgeht, könnten hier mögliche Fehlerquellen liegen.

EMS 5. Jan 2013 13:42

AW: Procedure in Procedure aufrufen klappt nicht
 
mhh ich hab das noch mal geprüft klappt doch irgendwie nicht mhh das ist doof
hab keine Ahnung mehr wie ich das richtig hinbekommen soll

Sir Rufo 5. Jan 2013 13:44

AW: Procedure in Procedure aufrufen klappt nicht
 
Zitat:

Zitat von EMS (Beitrag 1197756)
mhh ich hab das noch mal geprüft klappt doch irgendwie nicht mhh das ist doof
hab keine Ahnung mehr wie ich das richtig hinbekommen soll

Es soll ja nur gezählt werden wenn der SuchText gefunden wird.
Wenn in deiner Suchroutine aber kein wenn
Delphi-Quellcode:
if
o.ä. auftaucht, dann weiß ich sofort, da tut was nicht ;)

EMS 5. Jan 2013 13:48

AW: Procedure in Procedure aufrufen klappt nicht
 
mhh hab da jetzt einfach raus gemacht und geht nich

Delphi-Quellcode:
begin
while not eof(T) do
begin
     Readln(T,Text);       //lesen aus T(Tist LDatei) und in Text zwischen speichern
     Position:=pos(s,Text);  //Position von s(Eingabe aus Edit1.text)in Text bestimmen
     laenge:=LENGTH(s);    //Länge von dem Wort anzeigen
     delete(Text,position,laenge); //Wort löschen (aus Text) an Position des Ersten Bustabens
                                    //mit der länge(aus laenge);
     IF Position > 0 then
     begin
     inc(Position);                //ANZ hochzählen
     end;

end;
end;

mkinzler 5. Jan 2013 13:52

AW: Procedure in Procedure aufrufen klappt nicht
 
Delphi-Quellcode:
inc(Position); //ANZ hochzählen
Falsche Variable?

Sir Rufo 5. Jan 2013 13:57

AW: Procedure in Procedure aufrufen klappt nicht
 
Man sieht es besser, wenn man den gesamten Kontext betrachtet und den alten Code auskommentiert:
Delphi-Quellcode:
procedure String_Zaehler(
  var T : Textfile; // Datei, in der gesucht werden soll (als Textfile-Referenz)
   s : string; // Suchtext
   var Anz : Integer // Anzahl der gefundenen Stellen
 );
var
  position,laenge:integer;
  text:string;
begin
  while not eof(T) do
  begin
     Readln( T, Text ); // lesen aus T(Tist LDatei) und in Text zwischen speichern
     Position := pos( s, Text ); // Position von s(Eingabe aus Edit1.text)in Text bestimmen
     laenge := LENGTH( s ); // Länge von dem Wort anzeigen
     delete( Text, position, laenge ); // Wort löschen (aus Text) an Position des Ersten Bustabens
                                       // mit der länge(aus laenge);
     // -- alt --
     // inc( ANZ ); // ANZ hochzählen

     // -- neu --
     IF Position > 0 then
     begin
       inc( Position ); // ANZ hochzählen
     end;
  end;
end;

EMS 5. Jan 2013 13:58

AW: Procedure in Procedure aufrufen klappt nicht
 
ich denke wenn der ja bei position dann einen Wert hat dann soll der sich den merken und dann die ANZ hochzählen
Oder liege ich da falsch?

mkinzler 5. Jan 2013 14:02

AW: Procedure in Procedure aufrufen klappt nicht
 
Nein:
1. Hast du ja den gefundenen Suchtext aus dem String entfernt, daher ist die ursprüngliche Postion uninteressnat.
2. Wenn due den Text an Position 100 gefunden hast hast du ihn 1 mal gefunden und nicht 101 mal
3. Postion wird mit der nächsten Fundpostion oder ein wieder überschrieben

Sir Rufo 5. Jan 2013 14:02

AW: Procedure in Procedure aufrufen klappt nicht
 
Zitat:

Zitat von EMS (Beitrag 1197765)
ich denke wenn der ja bei position dann einen Wert hat dann soll der sich den merken und dann die ANZ hochzählen
Oder liege ich da falsch?

Dann zähl doch auch
Delphi-Quellcode:
ANZ
hoch ... :roll:

Damit
Delphi-Quellcode:
inc( Position ); // ANZ hochzählen
wird
Delphi-Quellcode:
position
hochgezählt, auch wenn der Kommentar etwas anderes verlauten lässt, aber es ist nur ein Kommentar ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr.
Seite 5 von 7   « Erste     345 67      

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