Delphi-PRAXiS
Seite 6 von 7   « Erste     456 7      

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)

EMS 5. Jan 2013 14:05

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;

Sir Rufo 5. Jan 2013 14:09

AW: Procedure in Procedure aufrufen klappt nicht
 
Du musst die Variable
Delphi-Quellcode:
Anz
erhöhen und nicht
Delphi-Quellcode:
position
.
Denn
Delphi-Quellcode:
Anz
wird zurückgegeben.

mkinzler 5. Jan 2013 14:09

AW: Procedure in Procedure aufrufen klappt nicht
 
Position ist die falsche Variable!

EMS 5. Jan 2013 14:15

AW: Procedure in Procedure aufrufen klappt nicht
 
ja mit ANZ kommt eine 1 im Label aber es sind 2 mal "Test" im text

Bjoerk 5. Jan 2013 15:08

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;

EMS 5. Jan 2013 15:34

AW: Procedure in Procedure aufrufen klappt nicht
 
Damit scheint es jetzt richtig zu sein

muschelknacker 20. Jan 2020 18:44

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.....

himitsu 20. Jan 2020 18:48

AW: Procedure in Procedure aufrufen klappt nicht
 
Zitat:

Zitat von muschelknacker (Beitrag 1455633)
Delphi-Quellcode:
// hier soll die untere procedure nochmal aufgerufen werden,klappt aber nicht

Wieso nicht?
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:
procedure TForm1.Pg3ausgabeExit(Sender: TObject);
begin
  Dbf2Bestand.Filtered:=false;
  Dbf2Bestand.Filtered:=true;
end;
PS: Wie bei vielen Events bekommt man das "richtige" Objekt als Parameter (z.B. oftmals das "Sender") mit rein.
Delphi-Quellcode:
procedure TForm1.Dbf2BestandFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  Accept := DataSet.FieldByName('ORT').AsString = 'LAGER';
end;
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.

muschelknacker 10. Feb 2020 17:34

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:
   Accept := Dbf2Bestand.FieldByName('SCHUBLADE').AsString = 'BE';
Für P3 muss es so aussehen :

Code:
 Accept := Dbf2Bestand.FieldByName('SCHUBLADE').AsString = 'RAUS';
Wie krieg ich das alles in einen Topf ???

:roll:

Danke fürs nachdenken.............

p80286 10. Feb 2020 21:59

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.
Seite 6 von 7   « Erste     456 7      

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