![]() |
AW: Procedure in Procedure aufrufen klappt nicht
ich hab das jetzt so und es wird immer 0 angezeigt
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); IF Position > 0 then begin inc(position); //ANZ hochzählen end; end; end; |
AW: Procedure in Procedure aufrufen klappt nicht
Du musst die Variable
Delphi-Quellcode:
erhöhen und nicht
Anz
Delphi-Quellcode:
.
position
Denn
Delphi-Quellcode:
wird zurückgegeben.
Anz
|
AW: Procedure in Procedure aufrufen klappt nicht
Position ist die falsche Variable!
|
AW: Procedure in Procedure aufrufen klappt nicht
ja mit ANZ kommt eine 1 im Label aber es sind 2 mal "Test" im text
|
AW: Procedure in Procedure aufrufen klappt nicht
Das Wort kann ja in der Zeile auch mehrfach vorkommen. Statt des if also zum Beispiel eine while Schiefe:
Delphi-Quellcode:
Position := Pos(S, Text);
while Position > 0 do begin Inc(Anzahl); Delete(Text, Position, Length(S)); Position := Pos(S, Text); end; |
AW: Procedure in Procedure aufrufen klappt nicht
Damit scheint es jetzt richtig zu sein
|
AW: Procedure in Procedure aufrufen klappt nicht
hat jemand für mich auch eine Lösung ??
in Object-Pascal versuche ich folgendes: procedure TForm1.Pg3ausgabeExit(Sender: TObject); begin Dbf2Bestand.Filtered:=true; // hier soll die untere procedure nochmal aufgerufen werden,klappt aber nicht end; procedure TForm1.Dbf2BestandFilterRecord(DataSet: TDataSet; var Accept: Boolean); begin Accept := Dbf2Bestand.FieldByName('ORT').AsString = 'LAGER'; end; danke für hilfe..... |
AW: Procedure in Procedure aufrufen klappt nicht
Zitat:
Text der Fehlermeldung oder so. :zwinker: Für deine Prozeduren Methoden gibt es in der Typ-Deklaration quasi eine Forward-Deklaration, womit diese Funktion an jener Stelle natürlich bereits bekannt ist. (innerhalb des selben Typen) PS: [DELPHI] dein Delphi-Code [/DELPHI] [EDIT] Du willst die Funktion nicht selber aufrufen, sondern es soll "neu" gefiltert werden? Hängt die Methde auch wirklich am DataSet.OnFilterIrgendwas dran? Oder wenn sich das Filterkriteitum geändert hat (die Auswertung im Dbf2BestandFilterRecord), dann einfach
Delphi-Quellcode:
PS: Wie bei vielen Events bekommt man das "richtige" Objekt als Parameter (z.B. oftmals das "Sender") mit rein.
procedure TForm1.Pg3ausgabeExit(Sender: TObject);
begin Dbf2Bestand.Filtered:=false; Dbf2Bestand.Filtered:=true; end;
Delphi-Quellcode:
Ist praktischer, um solche Funktionen wiederverwenden zu konnen und knall nicht, wenn man sich mal beim Namen verschreibt (Dank Autovervollständigung den falschen Namen erwischt) oder wenn die Komponente umbenannt wurde.
procedure TForm1.Dbf2BestandFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin Accept := DataSet.FieldByName('ORT').AsString = 'LAGER'; end; |
AW: Procedure in Procedure aufrufen klappt nicht
Guten Abend,
nein nein, keine Fehlermeldung. Im Kopf klappt es nicht. Ich mach nochmal gaaaaaanz langsam : In meiner Anwendung gibt es unter anderem ein PageControl mit 3 Seiten. Sagen wir mal P1, P2, P3. Auf jeder Seite befindet sich ein DBGrid und soll von einer einzigen Datenmenge über dieselbe DataSource jeweils ein anderes Filterkriterium darstellen. Für P1 sieht das so aus und klappt :
Code:
procedure TForm1.Dbf2BestandFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin Accept := (Dbf2Bestand.FieldByName('SCHUBLADE').AsString = 'ALLE') or (Dbf2Bestand.FieldByName('SCHUBLADE').AsString = 'BE'); end; Für P2 muss das so aussehen :
Code:
Für P3 muss es so aussehen :
Accept := Dbf2Bestand.FieldByName('SCHUBLADE').AsString = 'BE';
Code:
Wie krieg ich das alles in einen Topf ???
Accept := Dbf2Bestand.FieldByName('SCHUBLADE').AsString = 'RAUS';
:roll: Danke fürs nachdenken............. |
AW: Procedure in Procedure aufrufen klappt nicht
Und wo ist das Problenm?
Drei Seiten, drei Abfragen, drei Ergebnismengen. Gruß K-H P.S. Entschuldigung DBgrid hatte ich übersehen. Vergiss es. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:22 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