![]() |
AW: Procedure in Procedure aufrufen klappt nicht
Zitat:
Du solltest dir auch mal ein vernüftiges Testszenario überlegen.
Code:
Dieser Text liefert bei der Suche nach "Test" 6. Sollte aber 5 sein.
Test
nur so oder so und so noch ein Test Test Test Test
Code:
Dieser Text liefert bei der Suche nach "Test" 2. Sollte aber 5 sein.
Test Test Test
Test Test |
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.
|
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 |
AW: Procedure in Procedure aufrufen klappt nicht
Zitat:
Wenn in deiner Suchroutine aber kein wenn
Delphi-Quellcode:
o.ä. auftaucht, dann weiß ich sofort, da tut was nicht ;)
if
|
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; |
AW: Procedure in Procedure aufrufen klappt nicht
Delphi-Quellcode:
Falsche Variable?
inc(Position); //ANZ hochzählen
|
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; |
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? |
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 |
AW: Procedure in Procedure aufrufen klappt nicht
Zitat:
Delphi-Quellcode:
hoch ... :roll:
ANZ
Damit
Delphi-Quellcode:
wird
inc( Position ); // ANZ hochzählen
Delphi-Quellcode:
hochgezählt, auch wenn der Kommentar etwas anderes verlauten lässt, aber es ist nur ein Kommentar ;)
position
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 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