Thema: Delphi Seltsame Ergebnisse

Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Seltsame Ergebnisse

  Alt 3. Apr 2017, 12:26
Hi zusammen

Um mir die Session-Variable meiner MySQL-DB anzuzeigen und sie gegebenenfalls ändern zu können, habe ich folgende Konstrukte:

In FormCreate der Hauptform:
Delphi-Quellcode:
...
  Self.EdiSessionVarName.Text := IntToStr(FDMySQLDml.MySQLCorrespondent.MaxAllowedPacket);
  Self.UpDSessionVarMB.Position := Round(FDMySQLDml.MySQLCorrespondent.MaxAllowedPacket/1048576);
...
Nach Programmstart zeigen sich mir in der Werkzeugleiste 2 Edits, wie die Anhänge das zeigen. Beide sind ReadOnly, das kleinere ist mit einem TUpDown verbunden und zeigt dessen Positionswert an, der einen Megabytewert darstellt. Das Grössere zeigt diesen Wert in Bytes umgerechnet - dieser Wert wird schlussendlich auch in die Sessionvariable MaxAllowedPacket des Servers geschrieben/von da gelesen.

Ein Klick auf das UpDown verändert nun den Positionswert und damit den Wert der Edits:
Delphi-Quellcode:
procedure TCM_First.UpDSessionVarMBClick(Sender: TObject; Button: TUDBtnType);
begin
  EdiSessionVarMB.Text := IntToStr(UpDSessionVarMB.Position);
  EdiSessionVarName.Font.Color := clred;
  EdiSessionVarName.Text := IntToStr(UpDSessionVarMB.Position * 1048576);
end;
Hier wird der Text rot dargestellt, um deutlich zu machen, dass der neue Wert noch nicht dem Server übergeben wurde.
Entsprechen die Werte den Wünschen des Users, muss dieser nun den nebenstehenden'Ändern'-Button anklicken, um den Wert in die Sessionvariable zu schreiben:
Delphi-Quellcode:
procedure TCM_First.BtnChangeClick(Sender: TObject);
begin
  FDMySQLDml.MySQLCorrespondent.MaxAllowedPacket := UpDSessionVarMB.Position * 1048576;
  ChooseMaxAllowedPacket;
end;

procedure TCM_First.ChooseMaxAllowedPacket;
begin
  EdiSessionVarName.Font.Color := clWindowText;
  EdiSessionVarName.Text := IntToStr(FDMySQLDml.MySQLCorrespondent.MaxAllowedPacket);
  UpDSessionVarMB.position := Round(FDMySQLDml.MySQLCorrespondent.MaxAllowedPacket/1048576);
  EdiSessionVarMB.Text := IntToStr(UpDSessionVarMB.Position);
end;
In ChooseMaxAllowedPacket soll der neue Wert ausgelesen und den beteiligten Kmponenten zugewiesen werden. Die letzte Zeile habe ich eingefügt; aber diese Anweisung wäre offenbar gar nicht nötig. Und abei dachte ich schon, ich hätte das Problem gelöst...

Im Anhang finden sich einige Jpegs, die die Werte zu verschiedenen Zeitpunkten darstellen. Ganz offenbar wird zwar die Servervariable geändert, mir aber erst nach einem Programmneustart die Änderung auch dargestellt.

Nachdem ich mir die Jpegs nach dem Hochladen per Vorschau angesehen habe, hier doch noch einige Erläuterungen:
  • Bild 1 zeigt die Box gleich naach dem Programmstart
  • Bild 2 zeigt die Box nach dem Betätigen des TUpDown
  • Bild 3 zeigt die Box nach anklicken des Ändern-Buttons
Was, zum Kuckuck, mache ich falsch?

Gruss
Delbor
Miniaturansicht angehängter Grafiken
maxallowed-gui-programmstart.jpg   maxallowed-gui-programmstart-geaendert.jpg   maxallowed-gui-aenderbutton-geklickt.jpg  
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat