![]() |
Variablen in Funktion verwenden?!
Hallo, ich benötige einige Variablen ausm OnCreate in einer meiner Funktionen.
Delphi-Quellcode:
private
{ private declarations } ArtEntfall,ArtAufgabe,ArtAufsicht,ArtSondereinsatz,ArtSonstiges,ArtSStudium,ArtStatt,ArtUBesuch,ArtVerlegt,ArtVertretung:String;
Delphi-Quellcode:
Allerdings ergibt sich hier nur der Fehler 'Unbekannter Bezeichner'.
function VertArt(const queryname: TQuery; wer,fuer: String): String;
begin if (pos('fällt aus: siehe', queryname.FieldByName('BEMER_SCH').AsString)<>0) then Result:=ArtVerlegt; else if (Like(queryname.FieldByName('BEMER_SCH').AsString, '*?ufsicht*')) then Result:=ArtAufsicht; else if NOT (pos('fällt aus', AnsiLowerCase(queryname.FieldByName('BEMER_SCH').AsString))<>0) AND (wer='') then Result:=ArtSStudium; else if (Like(queryname.FieldByName('BEMER_SCH').AsString, '*?ufgabe*') OR Like(queryname.FieldByName('BEMER_SCH').AsString, '*?tillarbeit*') OR Like(queryname.FieldByName('BEMER_SCH').AsString, '*?eschäftigung*')) then Result:=ArtAufgabe; else if (Like(queryname.FieldByName('BEMER_SCH').AsString, '?ällt aus')) OR (Like(queryname.FieldByName('BEMER_SCH').AsString, 'Diese Stunde * fällt aus!')) then Result:=ArtEntfall; else if (pos('Statt', queryname.FieldByName('BEMER_SCH').AsString)<>0) AND (pos('Std.', queryname.FieldByName('BEMER_SCH').AsString)<>0) then Result:=ArtStatt; else if (fuer='') AND (queryname.FieldByName('WERT').AsString='P') AND (queryname.FieldByName('ANZAHL').AsString='1') then Result:=ArtSondereinsatz; else if NOT (pos('Statt', queryname.FieldByName('BEMER_SCH').AsString)<>0) AND NOT (pos('Std.', queryname.FieldByName('BEMER_SCH').AsString)<>0) AND NOT (fuer='') AND NOT (wer='') then Result:=ArtVertretung; else if (Like(queryname.FieldByName('BEMER_SCH').AsString, '*Unterrichtsbesuch*')) then Result:=ArtUBesuch; else Result:=ArtSonstiges; end; Hat jemand einen Rat für mich? |
Re: Variablen in Funktion verwenden?!
Mach aus der Funktion eine Methode.
|
Re: Variablen in Funktion verwenden?!
Dann musst du die Variablen global anlegen
|
Re: Variablen in Funktion verwenden?!
Delphi-Quellcode:
type
TMyClass = class() private ArtEntfall,ArtAufgabe,ArtAufsicht,ArtSondereinsatz,ArtSonstiges,ArtSStudium,ArtStatt,ArtUBesuch,ArtVerlegt,ArtVertretung:String; function VertArt(const queryname: TQuery; wer,fuer: String): String; end; // ... function TMyClass.VertArt(const queryname: TQuery; wer,fuer: String): String; begin if (pos('fällt aus: siehe', queryname.FieldByName('BEMER_SCH').AsString)<>0) then Result:=ArtVerlegt; else if (Like(queryname.FieldByName('BEMER_SCH').AsString, '*?ufsicht*')) then Result:=ArtAufsicht; else if NOT (pos('fällt aus', AnsiLowerCase(queryname.FieldByName('BEMER_SCH').AsString))<>0) AND (wer='') then Result:=ArtSStudium; else if (Like(queryname.FieldByName('BEMER_SCH').AsString, '*?ufgabe*') OR Like(queryname.FieldByName('BEMER_SCH').AsString, '*?tillarbeit*') OR Like(queryname.FieldByName('BEMER_SCH').AsString, '*?eschäftigung*')) then Result:=ArtAufgabe; else if (Like(queryname.FieldByName('BEMER_SCH').AsString, '?ällt aus')) OR (Like(queryname.FieldByName('BEMER_SCH').AsString, 'Diese Stunde * fällt aus!')) then Result:=ArtEntfall; else if (pos('Statt', queryname.FieldByName('BEMER_SCH').AsString)<>0) AND (pos('Std.', queryname.FieldByName('BEMER_SCH').AsString)<>0) then Result:=ArtStatt; else if (fuer='') AND (queryname.FieldByName('WERT').AsString='P') AND (queryname.FieldByName('ANZAHL').AsString='1') then Result:=ArtSondereinsatz; else if NOT (pos('Statt', queryname.FieldByName('BEMER_SCH').AsString)<>0) AND NOT (pos('Std.', queryname.FieldByName('BEMER_SCH').AsString)<>0) AND NOT (fuer='') AND NOT (wer='') then Result:=ArtVertretung; else if (Like(queryname.FieldByName('BEMER_SCH').AsString, '*Unterrichtsbesuch*')) then Result:=ArtUBesuch; else Result:=ArtSonstiges; end; |
Re: Variablen in Funktion verwenden?!
/Edit: Die globalen Variablen funktionieren doch schneller und einfacher. ;)
|
Re: Variablen in Funktion verwenden?!
Du brauchst natürlich eine Instanz der Klasse
|
Re: Variablen in Funktion verwenden?!
Zitat:
Du weisst in grossen Projekten dann nicht mehr, wer wann warum die globalen Variablen verändert. Ausserdem sind sie "verboten". Schau mal in den Borland StyleGuide. |
Re: Variablen in Funktion verwenden?!
Hai Svenkan,
noch etwas: Um deinen Code lesbarer (bzw. lesbar) zu machen solltest Du dir in deiner Methode eine Variable deklarieren und in dieser ganz am Anfang den Wert von
Delphi-Quellcode:
speichern. Dann musst Du in deinen Abfragen nicht immer wieder das Feld auslesen.
queryname.FieldByName('BEMER_SCH').AsString
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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