AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Warum wird eine falsche Variable in einem Objekt bearbeitet
Thema durchsuchen
Ansicht
Themen-Optionen

Warum wird eine falsche Variable in einem Objekt bearbeitet

Ein Thema von Ykcim · begonnen am 17. Mär 2014 · letzter Beitrag vom 18. Mär 2014
Antwort Antwort
Seite 1 von 2  1 2      
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#1

Warum wird eine falsche Variable in einem Objekt bearbeitet

  Alt 17. Mär 2014, 16:25
Hallo Zusammen,

ich habe das Objekt TUser mit vielen Varaiblen und die entsprechenden Geter und Seter dazu. Alles klappte auch sehr gut, bis ich heute eine weitere Variable hinzugefügt habe.

Wenn ich in User_Norm_Mandanten etwas reinschreiben will, dann verändert die Software die Variable User_Rollen (die wird gar nicht in der Procedure verwendet).

Hier ein Teil der Klasse TUser - es geht um die beiden letzten Variablen User_Rollen und User_Norm_Mandanten
Delphi-Quellcode:
type
   TUser = class(TUnternehmen)
   strict protected
      FUser_ID:Integer;
      FUser_Name:string;
      FUser_Vorname:string;
      FUser_Adresse_ID:Integer;
      FUser_Abteilung_ID:Integer;
      FUser_Telefon: string;
      FUser_Fax: string;
      FUser_Mobil: string;
      FUser_Mail: string;
      FUser_Passwort: string;
      FLogFile_ID: integer;
      FUser_Rechte: string;
      FUser_Default_Folder: string;
      FUser_LogIn: string;
      FUser_Rollen: string;
      FUser_Norm_Mandanten: string;

   strict private
      function GetUser_Abteilung_ID : integer;
      procedure SetUser_Abteilung_ID(val : integer);
   public
      property User_Abteilung_ID : integer read GetUser_Abteilung_ID write SetUser_Abteilung_ID;
   strict private
      function GetUser_Fax : string;
      procedure SetUser_Fax(val : string);
   public
      property User_Fax : string read GetUser_Fax write SetUser_Fax;
   strict private
      function GetUser_ID : Integer;
      procedure SetUser_ID(val : Integer);
   public
      property User_ID : Integer read GetUser_ID write SetUser_ID;
   strict private
      function GetUser_Mail : string;
      procedure SetUser_Mail(val : string);
   public
      property User_Mail : string read GetUser_Mail write SetUser_Mail;
   strict private
      function GetUser_Mobil : string;
      procedure SetUser_Mobil(val : string);
   public
      property User_Mobil : string read GetUser_Mobil write SetUser_Mobil;
   strict private
      function GetUser_Vorname : string;
      procedure SetUser_Vorname(val : string);
   public
      property User_Vorname : string read GetUser_Vorname write SetUser_Vorname;
   strict private
      function GetUser_Name : string;
      procedure SetUser_Name(val : string);
   public
      property User_Name : string read GetUser_Name write SetUser_Name;
   strict private
      function GetUser_Passwort : string;
      procedure SetUser_Passwort(val : string);
   public
      property User_Passwort : string read GetUser_Passwort write SetUser_Passwort;
   strict private
      function GetUser_Telefon : string;
      procedure SetUser_Telefon(val : string);
   public
      property User_Telefon : string read GetUser_Telefon write SetUser_Telefon;
   strict private
      function GetLogFile_ID : integer;
      procedure SetLogFile_ID(val : integer);
   public
      property LogFile_ID : integer read GetLogFile_ID write SetLogFile_ID;
   strict private
      function GetUser_Rechte : string;
      procedure SetUser_Rechte(val : string);
   public
      property User_Rechte : string read GetUser_Rechte write SetUser_Rechte;
   strict private
      function GetUser_Default_Folder : string;
      procedure SetUser_Default_Folder(val : string);
   public
      property User_Default_Folder : string read GetUser_Default_Folder write SetUser_Default_Folder;
   strict private
      function GetUser_LogIn : string;
      procedure SetUser_LogIn(val : string);
   public
      property User_LogIn : string read GetUser_LogIn write SetUser_LogIn;
   strict private
      function GetUser_Adresse_ID : integer;
      procedure SetUser_Adresse_ID(val : integer);
   public
      property User_Adresse_ID : integer read GetUser_Adresse_ID write SetUser_Adresse_ID;
   strict private
      function GetUser_Rollen : string;
      procedure SetUser_Rollen(val : string);
   public
      property User_Rollen : string read GetUser_Rollen write SetUser_Rollen;
   strict private
      function GetUser_Norm_Mandanten : string;
      procedure SetUser_Norm_Mandanten(val : string);
   public
      property User_Norm_Mandanten : string read GetUser_Norm_Mandanten write SetUser_Norm_Mandanten;

   {!Intelligente Funktionen und Proceduren}
   Private
      function Load_User_Rollen(User_ID: integer): string;
      procedure Load_User_Rechte( User_ID:integer);
      function User_Insert: integer;
      function User_Update(User_ID: integer): integer;
   Public
      procedure Load_User( User_ID:integer);
      procedure Clear_User;
      function Load_User_ID (LogIn: string): integer;
      function User_Speichern (User_ID: integer): integer;
   end;

var User: TUser; //Daten des angemeldeten Benutzers
      User_Management: TUser; //Um einen Benutzer zu verändern
      User_Neu: TUser; //Geänderte User-Daten

implementation

uses LogInUnit, TEinstellungenUnit;

function TUser.GetUser_Abteilung_ID: integer;
begin
   Result:= FUser_Abteilung_ID;
end;

procedure TUser.SetUser_Abteilung_ID(val : integer);
begin
   FUser_Abteilung_ID:= val;
end;

function TUser.GetUser_Adresse_ID: integer;
begin
   Result:= FUser_Adresse_ID;
end;

procedure TUser.SetUser_Adresse_ID(val : integer);
begin
   FUser_Adresse_ID:= val;
end;

function TUser.GetUser_Fax: string;
begin
   Result:= FUser_Fax;
end;

procedure TUser.SetUser_Fax(val : string);
begin
FUser_Fax:= val;
end;

function TUser.GetUser_ID: Integer;
begin
   Result:= FUser_ID;
end;

procedure TUser.SetUser_ID(val : Integer);
begin
   FUser_ID:= val;
end;

function TUser.GetUser_Mail: string;
begin
   Result:= FUser_Mail;
end;

procedure TUser.SetUser_Mail(val : string);
begin
   FUser_Mail:= val;
end;

function TUser.GetUser_Mobil: string;
begin
   Result:= FUser_Mobil;
end;

procedure TUser.SetUser_Mobil(val : string);
begin
   FUser_Mobil:= val;
end;

function TUser.GetUser_Vorname: string;
begin
   Result:= FUser_Vorname;
end;

procedure TUser.SetUser_Vorname(val : string);
begin
   FUser_Vorname:= val;
end;

function TUser.GetUser_Name: string;
begin
   Result:= FUser_Name;
end;

procedure TUser.SetUser_Name(val : string);
begin
   FUser_Name:= val;
end;

function TUser.GetUser_Passwort: string;
begin
   Result:=FUser_Passwort;
end;

procedure TUser.SetUser_Passwort(val : string);
begin
   FUser_Passwort:= val;
end;

function TUser.GetUser_Telefon: string;
begin
   Result:= FUser_Telefon;
end;

procedure TUser.SetUser_Telefon(val : string);
begin
   FUser_Telefon:= val;
end;

function TUser.GetLogFile_ID: integer;
begin
   Result:= FLogFile_ID;
end;

procedure TUser.SetLogFile_ID(val : integer);
begin
   FLogFile_ID:= val;
end;

function TUser.GetUser_Rechte: string;
begin
   Result:= FUser_Rechte;
end;

procedure TUser.SetUser_Rechte(val : string);
begin
   FUser_Rechte:= val;
end;

function TUser.GetUser_Default_Folder: string;
begin
   Result:= FUser_Default_Folder;
end;

procedure TUser.SetUser_Default_Folder(val : string);
begin
   FUser_Default_Folder:= val;
end;

function TUser.GetUser_LogIn: string;
begin
   Result:= FUser_LogIn;
end;

procedure TUser.SetUser_LogIn(val : string);
begin
   FUser_LogIn:= val;
end;

function TUser.GetUser_Rollen: string;
begin
   Result:= FUser_Rollen;
end;

procedure TUser.SetUser_Rollen(val : string);
begin
   FUser_Rollen:= val;
end;

function TUser.GetUser_Norm_Mandanten: string;
begin
   Result:= FUser_Norm_Mandanten;
end;

procedure TUser.SetUser_Norm_Mandanten(val : string);
begin
   FUser_Norm_Mandanten:= val;
end;

Wenn die nachfolgende Programmzeile ausgeführt wird, dann wird nicht User_Norm_Mandanten verändert, sondern User_Rollen.

User_Neu.User_Norm_Mandanten:=User_Neu.User_Norm_Mandanten+Grid_Norm_Mandanten.Cells[0,I]+',';

Ich weiß wirklich nicht, warum das passiert.
Hier die ganze Procedure
Delphi-Quellcode:
procedure TFrameUser.GlowDelete_MandantClick(Sender: TObject);
var I: integer;
begin
   if (Grid_Norm_Mandanten.Cells[0,Grid_Norm_Mandanten.Row]='') or (Grid_Norm_Mandanten.Cells[0,Grid_Norm_Mandanten.Row]=IntToStr(User_Neu.User_Unternehmen_ID)) then
      Exit;
   if Grid_Norm_Mandanten.Row>0 then begin
      User_Neu.User_Norm_Mandanten:='';
      if Grid_Mandanten.Cells[0,Grid_Mandanten.RowCount-1]<>'then
         Grid_Mandanten.AddRow;
      Grid_Mandanten.Cells[0,Grid_Mandanten.RowCount-1]:=Grid_Norm_Mandanten.Cells[0,Grid_Norm_Mandanten.Row];
      Grid_Mandanten.Cells[1,Grid_Mandanten.RowCount-1]:=Grid_Norm_Mandanten.Cells[1,Grid_Norm_Mandanten.Row];
      Grid_Mandanten.Sort(0,sdAscending);
      Grid_Norm_Mandanten.ClearRows(Grid_Norm_Mandanten.Row,1);
      if Grid_Norm_Mandanten.RowCount>2 then
         Grid_Norm_Mandanten.RemoveRows(Grid_Norm_Mandanten.Row,1);
      for I := 1 to Grid_Norm_Mandanten.RowCount -1 do begin
         User_Neu.User_Norm_Mandanten:=User_Neu.User_Norm_Mandanten+Grid_Norm_Mandanten.Cells[0,I]+',';
      end;
      User_Neu.User_Norm_Mandanten:=Copy(User_Neu.User_Norm_Mandanten,1,Length(User_neu.User_Norm_Mandanten)-1);
      GlowSpeichern.Enabled:=true;
      GlowAbbruch.Enabled:=true;
   end;
end;
Sieht jemand meinen Fehler?

Vielen Dank
Patrick
Patrick

Geändert von TBx (18. Mär 2014 um 09:42 Uhr) Grund: Dreckfuhler aus Titel entfernt
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Warum wird eins falsche Variable in einem Objekt bearbeitet

  Alt 17. Mär 2014, 17:23
Dein Code ist leider sehr unübersichtlich und unvollständig (User_Rollen fehlt zB). Daher kann ich persönlich da erstmal keinen Fehler erkennen.

Räume doch deinen Code erstmal ordentlich auf und programmiere "ordentlich", wahrscheinlich löst sich das Problem dann von selbst oder du erkennst den Fehler.

1) Du kannst Felder und Methoden in Klassen in gleichen Bereichen zusammenfassen. Wozu verwendest du zig public - und strict private -Klauseln?
Delphi-Quellcode:
type
  TMyClass = class
  private
    FStringVar: String;
    FIntegerVar: Integer;

    function PrivateFunction: String;
    procedure PrivateMethod(AVar: Integer);
  protected
    function ProtectedFunction: Boolean;
    procedure ProtectedMethod(AVar: Boolean);
  public
    procedure PublicMethod;
    function PublicFunction: Pointer;
  published
    property StringProperty: String
      read FStringVar
      write FStringVar;
    property IntegerProperty: String
      read FIntegerVar
      write FIntegerVar;
  end;
2) Du brauchst für Properties, die du direkt liest und schreibst und wo sonst nichts weiter passiert keine extra Getter und Setter. (siehe published-Bereich oben)

3) Wozu verwendest du strict private für Getter und Setter?

4) Warum verwendest du EINE Stringvariable, um mehrere Werte zu speichern? User_Neu.User_Norm_Mandanten:=User_Neu.User_Norm_Mandanten+Grid_Norm_Mandanten.Cells[0,I]+',' Verwende doch eine Delphi-Referenz durchsuchenTStringList?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#3

AW: Warum wird eins falsche Variable in einem Objekt bearbeitet

  Alt 17. Mär 2014, 18:00
3) Ja, wenn man die Getter/Setter in einem Private-Block zusammenfast, dann wird es bestimmt übersichtlicher.

1) Im Grunde ist es natürlich Besser hier die Getter/Setter wegzulassen und vom Property direkt auf das Feld zu verweisen, da in den Gettern und Settern j eigentlich garnichts gemacht wird, außer die Feldzuweisungen.
Aber grundsätzlich sollte es dennoch keine Probleme geben und die Zugriffe im falschen Feld landen. (außer man verschreibt sich in den Gettern/Settern)

2) STRICT PRIVATE ist das eigentliche PRIVATE
Auf diese Weise kommt man nicht auf die blöde Idee und verwendet innerhalb der Unit (in den anderen Klassen) ausversen diese Methoden, anstatt über das Property zu gehen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Mär 2014 um 18:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: Warum wird eins falsche Variable in einem Objekt bearbeitet

  Alt 17. Mär 2014, 18:21
Du kannst Felder und Methoden in Klassen in gleichen Bereichen zusammenfassen. Wozu verwendest du zig public - und strict private -Klauseln?
Sehe ich gelegentlich auch bei anderen Leuten und mache ich persönlich z.b. auch so, um bestimmte Methoden zu gruppieren. Wenn man es nicht übertreibt erhöht das meiner Meinung nach die Übersichtlichkeit. Ist aber vermutlich Geschmackssache
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Warum wird eins falsche Variable in einem Objekt bearbeitet

  Alt 17. Mär 2014, 18:40
Die zusätzliche Strukturierung, um mehr Übersichtlichkeit zu erhalten, ist sicher sinnvoll. In dem Fall ist es aber übertrieben, vorallem in dieser Kombination mit den Gettern und Settern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#6

AW: Warum wird eins falsche Variable in einem Objekt bearbeitet

  Alt 17. Mär 2014, 18:56
Ich lege auch schonmal "mehrere" Gruppen von Private&Public-Blöcken an, bei größeren Komponenten, um die Funktionen zu gruppieren.

Aber doch nicht für jeden Wert einzeln ... gruppierte Grüppchen halt
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
michaelthuma
(Gast)

n/a Beiträge
 
#7

AW: Warum wird eins falsche Variable in einem Objekt bearbeitet

  Alt 17. Mär 2014, 19:46
Wie schaut denn TUnternehmen aus? In dem Code finde ich mal keinen Grund.

Frage. Werden die Werte wirklich so geschrieben oder allein in der Debugger Anzeige?
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Warum wird eins falsche Variable in einem Objekt bearbeitet

  Alt 18. Mär 2014, 07:36
Hui hui hui, jetzt bekomme ich aber gerade mein Fett weg

Ich generiere die Properties, Getter und Setter über die Modellierung, daher wurde sie entsprechend aufgesetzt...

@ michaelthuma
TUnternehmen wird in anderen Proceduren und Funktionen der Klassen TUser verwendet.
Meinst Du mit Werten den Variablen-Namen? Wenn ja, dann lautet die Antwort "Ja", das sind die echten Namen.

@nuclearping
Ich habe den Code jetzt etwas anders formatiert und hoffe, dass er so besser zu lesen ist. User_Rollen ist meines Erachtens vorhanden (die vorletzte Variable).
Zitat:
Warum verwendest du EINE Stringvariable, um mehrere Werte zu speichern?
Ich speichere mehrere Werte in einem String, weil es an dieser in meinen Augen Stelle Sinn macht. Der String wird nämlich später in einem SQL-Statement verwendet.
Zitat:
) Du brauchst für Properties, die du direkt liest und schreibst und wo sonst nichts weiter passiert keine extra Getter und Setter. (siehe published-Bereich oben)
Wie das funktioniert weiß ich leider nicht. Ich kenne bislang nur diesen Weg...

@ALL
Vielen Dank für die Anregungen, lerne gerne dazu!!!
Sieht jemand denn vielleicht auch die Ursache für den Fehler?

Vielen Dank
Patrick

Delphi-Quellcode:
type
   TUser = class(TUnternehmen)
   strict protected
      FUser_ID:Integer;
      FUser_Name:string;
      FUser_Vorname:string;
      FUser_Adresse_ID:Integer;
      FUser_Abteilung_ID:Integer;
      FUser_Telefon: string;
      FUser_Fax: string;
      FUser_Mobil: string;
      FUser_Mail: string;
      FUser_Passwort: string;
      FLogFile_ID: integer;
      FUser_Rechte: string;
      FUser_Default_Folder: string;
      FUser_LogIn: string;
      FUser_Rollen: string;
      FUser_Norm_Mandanten: string;

   strict private
      function GetUser_Abteilung_ID : integer;
      procedure SetUser_Abteilung_ID(val : integer);
      function GetUser_Fax : string;
      procedure SetUser_Fax(val : string);
      function GetUser_ID : Integer;
      procedure SetUser_ID(val : Integer);
      function GetUser_Mail : string;
      procedure SetUser_Mail(val : string);
      function GetUser_Mobil : string;
      procedure SetUser_Mobil(val : string);
      function GetUser_Vorname : string;
      procedure SetUser_Vorname(val : string);
      function GetUser_Name : string;
      procedure SetUser_Name(val : string);
      function GetUser_Passwort : string;
      procedure SetUser_Passwort(val : string);
      function GetUser_Telefon : string;
      procedure SetUser_Telefon(val : string);
      function GetLogFile_ID : integer;
      procedure SetLogFile_ID(val : integer);
      function GetUser_Rechte : string;
      procedure SetUser_Rechte(val : string);
      function GetUser_Default_Folder : string;
      procedure SetUser_Default_Folder(val : string);
      function GetUser_LogIn : string;
      procedure SetUser_LogIn(val : string);
      function GetUser_Adresse_ID : integer;
      procedure SetUser_Adresse_ID(val : integer);
      function GetUser_Rollen : string;
      procedure SetUser_Rollen(val : string);
      function GetUser_Norm_Mandanten : string;
      procedure SetUser_Norm_Mandanten(val : string);
   public
      property User_Abteilung_ID : integer
         read GetUser_Abteilung_ID
         write SetUser_Abteilung_ID;
      property User_Fax : string
         read GetUser_Fax
         write SetUser_Fax;
      property User_ID : Integer
         read GetUser_ID
         write SetUser_ID;
      property User_Mail : string
         read GetUser_Mail
         write SetUser_Mail;
      property User_Mobil : string
         read GetUser_Mobil
         write SetUser_Mobil;
      property User_Vorname : string
         read GetUser_Vorname
         write SetUser_Vorname;
      property User_Name : string
         read GetUser_Name
         write SetUser_Name;
      property User_Passwort : string
         read GetUser_Passwort
         write SetUser_Passwort;
      property User_Telefon : string
         read GetUser_Telefon
         write SetUser_Telefon;
      property LogFile_ID : integer
         read GetLogFile_ID
         write SetLogFile_ID;
      property User_Rechte : string
         read GetUser_Rechte
         write SetUser_Rechte;
      property User_Default_Folder : string
         read GetUser_Default_Folder
         write SetUser_Default_Folder;
      property User_LogIn : string
         read GetUser_LogIn
         write SetUser_LogIn;
      property User_Adresse_ID : integer
         read GetUser_Adresse_ID
         write SetUser_Adresse_ID;
      property User_Rollen : string
         read GetUser_Rollen
         write SetUser_Rollen;
      property User_Norm_Mandanten : string
         read GetUser_Norm_Mandanten
         write SetUser_Norm_Mandanten;

   {!Intelligente Funktionen und Proceduren}
   Private
      function Load_User_Rollen(User_ID: integer): string;
      procedure Load_User_Rechte( User_ID:integer);
      function User_Insert: integer;
      function User_Update(User_ID: integer): integer;
   Public
      procedure Load_User( User_ID:integer);
      procedure Clear_User;
      function Load_User_ID (LogIn: string): integer;
      function User_Speichern (User_ID: integer): integer;
   end;

var User: TUser; //Daten des angemeldeten Benutzers
      User_Management: TUser; //Um einen Benutzer zu verändern
      User_Neu: TUser; //Geänderte User-Daten

implementation

uses LogInUnit, TEinstellungenUnit;

function TUser.GetUser_Abteilung_ID: integer;
begin
   Result:= FUser_Abteilung_ID;
end;

procedure TUser.SetUser_Abteilung_ID(val : integer);
begin
   FUser_Abteilung_ID:= val;
end;

function TUser.GetUser_Adresse_ID: integer;
begin
   Result:= FUser_Adresse_ID;
end;

procedure TUser.SetUser_Adresse_ID(val : integer);
begin
   FUser_Adresse_ID:= val;
end;

function TUser.GetUser_Fax: string;
begin
   Result:= FUser_Fax;
end;

procedure TUser.SetUser_Fax(val : string);
begin
FUser_Fax:= val;
end;

function TUser.GetUser_ID: Integer;
begin
   Result:= FUser_ID;
end;

procedure TUser.SetUser_ID(val : Integer);
begin
   FUser_ID:= val;
end;

function TUser.GetUser_Mail: string;
begin
   Result:= FUser_Mail;
end;

procedure TUser.SetUser_Mail(val : string);
begin
   FUser_Mail:= val;
end;

function TUser.GetUser_Mobil: string;
begin
   Result:= FUser_Mobil;
end;

procedure TUser.SetUser_Mobil(val : string);
begin
   FUser_Mobil:= val;
end;

function TUser.GetUser_Vorname: string;
begin
   Result:= FUser_Vorname;
end;

procedure TUser.SetUser_Vorname(val : string);
begin
   FUser_Vorname:= val;
end;

function TUser.GetUser_Name: string;
begin
   Result:= FUser_Name;
end;

procedure TUser.SetUser_Name(val : string);
begin
   FUser_Name:= val;
end;

function TUser.GetUser_Passwort: string;
begin
   Result:=FUser_Passwort;
end;

procedure TUser.SetUser_Passwort(val : string);
begin
   FUser_Passwort:= val;
end;

function TUser.GetUser_Telefon: string;
begin
   Result:= FUser_Telefon;
end;

procedure TUser.SetUser_Telefon(val : string);
begin
   FUser_Telefon:= val;
end;

function TUser.GetLogFile_ID: integer;
begin
   Result:= FLogFile_ID;
end;

procedure TUser.SetLogFile_ID(val : integer);
begin
   FLogFile_ID:= val;
end;

function TUser.GetUser_Rechte: string;
begin
   Result:= FUser_Rechte;
end;

procedure TUser.SetUser_Rechte(val : string);
begin
   FUser_Rechte:= val;
end;

function TUser.GetUser_Default_Folder: string;
begin
   Result:= FUser_Default_Folder;
end;

procedure TUser.SetUser_Default_Folder(val : string);
begin
   FUser_Default_Folder:= val;
end;

function TUser.GetUser_LogIn: string;
begin
   Result:= FUser_LogIn;
end;

procedure TUser.SetUser_LogIn(val : string);
begin
   FUser_LogIn:= val;
end;

function TUser.GetUser_Rollen: string;
begin
   Result:= FUser_Rollen;
end;

procedure TUser.SetUser_Rollen(val : string);
begin
   FUser_Rollen:= val;
end;

function TUser.GetUser_Norm_Mandanten: string;
begin
   Result:= FUser_Norm_Mandanten;
end;

procedure TUser.SetUser_Norm_Mandanten(val : string);
begin
   FUser_Norm_Mandanten:= val;
end;

Delphi-Quellcode:
procedure TFrameUser.GlowDelete_MandantClick(Sender: TObject);
var I: integer;
begin
    if (Grid_Norm_Mandanten.Cells[0,Grid_Norm_Mandanten.Row]='') or (Grid_Norm_Mandanten.Cells[0,Grid_Norm_Mandanten.Row]=IntToStr(User_Neu.User_Unternehmen_ID)) then
       Exit;
    if Grid_Norm_Mandanten.Row>0 then begin
       User_Neu.User_Norm_Mandanten:='';
       if Grid_Mandanten.Cells[0,Grid_Mandanten.RowCount-1]<>'then
          Grid_Mandanten.AddRow;
       Grid_Mandanten.Cells[0,Grid_Mandanten.RowCount-1]:=Grid_Norm_Mandanten.Cells[0,Grid_Norm_Mandanten.Row];
       Grid_Mandanten.Cells[1,Grid_Mandanten.RowCount-1]:=Grid_Norm_Mandanten.Cells[1,Grid_Norm_Mandanten.Row];
       Grid_Mandanten.Sort(0,sdAscending);
       Grid_Norm_Mandanten.ClearRows(Grid_Norm_Mandanten.Row,1);
       if Grid_Norm_Mandanten.RowCount>2 then
          Grid_Norm_Mandanten.RemoveRows(Grid_Norm_Mandanten.Row,1);
       for I := 1 to Grid_Norm_Mandanten.RowCount -1 do begin
          User_Neu.User_Norm_Mandanten:=User_Neu.User_Norm_Mandanten+Grid_Norm_Mandanten.Cells[0,I]+',';
       end;
       User_Neu.User_Norm_Mandanten:=Copy(User_Neu.User_Norm_Mandanten,1,Length(User_neu.User_Norm_Mandanten)-1);
       GlowSpeichern.Enabled:=true;
       GlowAbbruch.Enabled:=true;
    end;
end;
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Warum wird eins falsche Variable in einem Objekt bearbeitet

  Alt 18. Mär 2014, 07:53
Was passiert denn, wenn Du das Feld FUser_Norm_Mandanten als TStrings oder gleich TStringlist deklarierst? Du bräuchtest dann noch eine Add-Methode, der Getter würde die aufbereitete Liste zurückgeben. Und die Liste müsste natürlich im Konstruktor angelegt und im Destruktor wieder freigegeben werden.
[edit] Das klang vielleicht etwas verwirrend, daher hier eine Schmalspurversion des Ganzen:
Delphi-Quellcode:
type
  TUser = class
  strict private
    FMandanten: TStringlist;
    function GetMandanten: string;
  public
    constructor Create;
    destructor Destroy; override;
    procedure AddMandant(const NewMandant: string);
    property Mandanten: string read GetMandanten;
  end;

...

procedure TUser.AddMandant(const NewMandant: string);
begin
  FMandanten.Add(NewMandant);
end;

constructor TUser.Create;
begin
  inherited Create;
  FMandanten := TStringlist.Create;
end;

destructor TUser.Destroy;
begin
  FMandanten.Free;
  inherited;
end;

function TUser.GetMandanten: string;
begin
  Result := FMandanten.CommaText;
end;
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (18. Mär 2014 um 08:16 Uhr)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Warum wird eins falsche Variable in einem Objekt bearbeitet

  Alt 18. Mär 2014, 08:40
Hallo Zusammen,

bitte fragt mich, was heute anders ist, aber als ich es gerade wieder versucht habe, hat alles entsprechend funktioniert. Es war noch ein kleiner anderer Fehler drin, der aber damit nichts zu tun hatte. Ich habe das Dingen compilierte, und die Procedure genau beobachtet und er hat sofort auf die richtigen Variablen zugegriffen. Jetzt im Nachhinein fällt mir ein, dass ich gestern, als ich Delphi beendete, die Message bekam, das Delphi nicht richtig ausgeführt würde und das System hakte kurz. Vielleicht war es wirklich ein Fehler im Delphi ?! Delphi 2009 Enterprise

Jetzt funktioniert es jedenfalls wie gewünscht und auch programmiert...

Vielen Dank für die Unterstützung
Patrick
Patrick
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz