AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Reise von Berlin nach Athens

Ein Thema von SearchBot · begonnen am 16. Aug 2024 · letzter Beitrag vom 23. Okt 2024
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#21

AW: Reise von Berlin nach Athens

  Alt 30. Aug 2024, 10:01
Ich habe mir dafür vor einiger Zeit eine Unit geschrieben, die eine statische Klasse enthält, die wiederum Methoden hat, die intern die Windows-MessageBox aufrufen. Die Benutzung kann dann z.B. so aussehen:
Delphi-Quellcode:
TXXXDialog.ShowInfo('Pentagon erfolgreich gehackt');
if TXXXDialog.Confirm('Kreml auch gleich hacken?') then
  SiehZu();
Damit ist immer klar, was gemeint ist. Für FMX müsste das wohl erweitert werden, aber ich benutze seit Jahren nur noch VCL.
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
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#22

AW: Reise von Berlin nach Athens

  Alt 30. Aug 2024, 10:38
Aber schon interessant, daß das Berlin hierbei schlauer war als jetzt das Athens und es nicht als Fehler bemängelte, sondern richtig gemacht hatte.
In Berlin war die ShowMessage nicht overload, während es in Athens jetzt zwei mit overload gekennzeichnete davon gibt. In Berlin hat deine Version einfach die Originalversion verdeckt, aber in Athens kommt es eben zu dieser Doppeldeutigkeit.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
317 Beiträge
 
Delphi 12 Athens
 
#23

AW: Reise von Berlin nach Athens

  Alt 30. Aug 2024, 17:51
So, meine Funktion kann ich ja ändern.

Was mache ich aber, wenn es eine Funktion vom "festen" Quelltext ist?
Den hab ich nicht überladen.
Zitat:
[dcc32 Fehler] meineAPI.pas(537): E2251 Doppeldeutiger überladener Aufruf von 'AddPair'
System.JSON.pas(752): Verwandte Methode: function TJSONObject.AddPair(const string; const Boolean): TJSONObject;
System.JSON.pas(737): Verwandte Methode: function TJSONObject.AddPair(const string; const Extended): TJSONObject;
System.JSON.pas(707): Verwandte Methode: function TJSONObject.AddPair(const string; const string): TJSONObject;
Ursache ist wohl, daß ich dem 2. Parameter eine Variant-Variable übergebe, die mal eine Zahl oder ein String sein kann...
Delphi-Quellcode:
 
 if s<>'then
  json.AddPair(prop,TJSONNumber.Create(s)) //s ist Typ string; prop ist shortstring
 else
  json.AddPair(prop,value); //<- hier meckert es! value ist Typ Variant, vielleicht numerisch
Wie erwähnt wusste Berlin, was zu tun ist - Athens beklagt das.
Muss ich jetzt dem Compiler entgegen kommen und den 'varianten' Wert selbst vorbereiten?
Oder gibt ein Schalter, der den Variant-Typ wie in Berlin selbst richtig einsetzt und die passende Funktion verwendet?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Reise von Berlin nach Athens

  Alt 30. Aug 2024, 18:20
Zitat:
wusste
Gab es dort eine Überladung mit Variant? (wo dann drin der interne Typ des Variant ausgewertet wird)

Wenn nicht, dann kann ich mir kaum vorstellen, dass Berlin es wusste und einfach blind in irgendeinen Typ gecastet hat ... was nicht unbedingt der richtige Typ sein muß.


Lösungen z.B. für Boolean:
Delphi-Quellcode:
json.AddPair(prop, Boolean(value));
json.AddPair(prop, VarToBool(value));
$2B or not $2B

Geändert von himitsu (30. Aug 2024 um 18:22 Uhr)
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
317 Beiträge
 
Delphi 12 Athens
 
#25

AW: Reise von Berlin nach Athens

  Alt 10. Sep 2024, 13:28
Gab es dort eine Überladung mit Variant? (wo dann drin der interne Typ des Variant ausgewertet wird)

Lösungen z.B. für Boolean:
Delphi-Quellcode:
json.AddPair(prop, Boolean(value));
json.AddPair(prop, VarToBool(value));
Nein, ich habe da nichts überladen. Das mit dem VarTo.. sieht interessant aus, das werde ich versuchen (im Moment habe ich es auskommentiert, weil ich noch andere Probleme habe ).

Gerade ein anderes kniffliges Problem:
Ich habe SynEdit aus dem GetIt installiert.
Und weil im Git es dazu keine Issue gibt (und auch wenn ich ein neues Projekt damit starte, problemlos), wird das wahrscheinlich nur bei mir das Problem sein. In einem neuen Projekt funktioniert das SynEdit mit den selben Einstellungen

Wenn ich jetzt mein Projekt öffne, das ein SynEdit enthält, sagt mir die IDE, bevor noch irgendwas davon erscheint:
Zitat:
Listenindex außerhalb des gültigen Bereichs (0). TList<System.Integer> ist leer
Aha!?

Die Details erzählen mir..
Zitat:
[23308D4C]{SynEditDR290.bpl} System.Generics.Collections. + $24
[23319B83]{SynEditDR290.bpl} Syneditwordwrap.TSynWordWrapPlugin.RowCount + $1F
[233465D9]{SynEditDR290.bpl} Synedit.TCustomSynEdit.GetDisplayRowCount + $75
[23312CCF]{SynEditDR290.bpl} Syneditkbdhandler.Finalization + $A67
[23312D8A]{SynEditDR290.bpl} Syneditkbdhandler.Finalization + $B22
[23339F5D]{SynEditDR290.bpl} Synedit.TCustomSynEdit.UpdateScrollBars + $41
[23341971]{SynEditDR290.bpl} Synedit.TCustomSynEdit.SizeOrFontChanged + $D1
[2333A748]{SynEditDR290.bpl} Synedit.TCustomSynEdit.WMSize + $1C
Wenn ich die Komponente in ein neues Projekt kopiere, kommt es nicht zu diesem Fehler.

Beim Ausführen meines Programms knallt es mit der selben Meldung in der unit SynEditWordWrap hier (die // stammen vom Autor):
Delphi-Quellcode:
  // fLineOffsets[n] is the index of the first row of the [n+1]th line.
  // e.g. Starting row of first line (0) is 0. Starting row of second line (1)
  // is fLineOffsets[0]. Clear?

  TSynWordWrapPlugin = class(TInterfacedObject, ISynEditBufferPlugin)
  private
    fLineOffsets: TList<Integer>;

[...]
constructor TSynWordWrapPlugin.Create(aOwner: TCustomSynEdit);
begin
  inherited Create; // just to work as reminder in case I revert it to a TComponent...
  if aOwner = nil then
    raise Exception.Create( 'Owner of TSynWordWrapPlugin must be a TCustomSynEdit' );
  fEditor := aOwner;
  fLineCount := fEditor.Lines.Count;
  fLineOffsets := TList<Integer>.Create;
  fRowLengths := TList<Integer>.Create;
  Reset;
end;

function TSynWordWrapPlugin.RowCount: integer;
begin
  if fLineCount > 0 then
    Result := fLineOffsets[fLineCount - 1]; // <---- da: EArgumentOutOfRangeException

  Assert(fRowLengths.Count = Result);
end;
Ich kenne mich mit Generics nicht aus - fehlt da was bei der Initialisierung? Woran kann das sonst liegen und wie behebe ich das?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Reise von Berlin nach Athens

  Alt 10. Sep 2024, 13:49
Nein, ich habe da nichts überladen.
Nicht du, aber eventuell war es im alten Delphi anders implementiert?

Wollte vor mehreren Tagen schonmal fragen ... lag aber immernoch rum.
Hab ja nicht alle alten Delphi installiert, um da mal eben nachsehn zu können.
Sollte vielleicht doch endlich mal ein gewisses Projekt fertigstellen ....
https://www.delphipraxis.net/215806-...ml#post1540790


Das mit dem VarTo.. sieht interessant aus
Boolean(...) castet es in diesen Typ
und ist es NULL, dann knallt es, wiel es ja kein Boolean ist.

VarToBool macht der Gleiche, aber macht aus NULL ein False.

Ebenso z.B. VarToStr und VarToInt, wo aus NULL ein Leerstring '', bzw. 0 wird.
$2B or not $2B

Geändert von himitsu (10. Sep 2024 um 13:54 Uhr)
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
317 Beiträge
 
Delphi 12 Athens
 
#27

AW: Reise von Berlin nach Athens

  Alt 13. Sep 2024, 13:25
Wozu dient der Vcl.Forms.TForm.VisualManager ?

In der Online-Hilfe zu Delphi 12 ist dazu äußert informativ zu lesen
Zitat:
Embarcadero Technologies verfügt zurzeit über keine zusätzlichen Informationen. Bitte unterstützen Sie uns bei der Dokumentation dieses Themas, indem Sie Ihre Kommentare auf der Diskussionsseite eingeben.
Es gibt in der Vcl auch keine Komponente auf der Palette dafür...

Warum frage ich?
Ich habe beim Einlesen meiner älteren Projekte irgendwie Darstellungs-Probleme (ich habe die Projekte nur mit den Dateien *.pas, *.dfm und die .dpr in einen neuen Ordner angelegt, ganz frisch also für Athens; keine *.res zunächst).
zB passen die Beschriftung der Checkboxen nicht mehr, die Buttons heben sich ganz hässlich nur farblich (dunkelgrau) vom Rest ab, also kein Rahmen herum.

Dann habe ich entdeckt, daß es die neuerdings Eigenschaft "StyleName" gibt und setze sie im Formular auf "Windows" - schon besser.
Starte ich dann das Programm, habe ich aber die blau glänzende Ansicht von Vista mit dem dicken Rahmen außen herum - und die Aufschrift der Titelleiste fehlt, bis ich die Fenstergröße ändere.

Warum kann das Programm nicht so ausgeführt werden, wie ich es im Designer der IDE sehe??
Was hat die IDE für ein Style?

Bei Berlin hatte ich ja schon Styles einrichten können - aber die haben sich sehr nachteilig auf die Aufbau-Geschwindigkeit der Darstellung ausgewirkt. Trotz DoubleBuffer flackern... - daher habe ich das dann gelassen.

Und was mache ich denn jetzt schon wieder falsch?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#28

AW: Reise von Berlin nach Athens

  Alt 13. Sep 2024, 13:53
Wozu dient der Vcl.Forms.TForm.VisualManager ?
Hat was mit der neuen MDI-Implementierung zu tun: Das Interface IFormVisualManager und die Eigenschaft VisualManager der Klasse TCustomForm

Wegen der Darstellungsprobleme müsstest du vielleicht etwas konkreter werden. Was du in der IDE siehst, hängt stark von den aktuellem Einstellungen unter Tools - Optionen - Benutzeroberfläche - Formular-Designer ab. Zur Laufzeit sind die Einstellungen unter Projekt - Optionen - Anwendung - Manifest und Erscheinungsbild relevant. Außerdem wären Screenshots von der fehlerhaften Darstellung hilfreich.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Reise von Berlin nach Athens

  Alt 13. Sep 2024, 13:54
zB passen die Beschriftung der Checkboxen nicht mehr, die Buttons heben sich ganz hässlich nur farblich (dunkelgrau) vom Rest ab, also kein Rahmen herum.
Im FormDesigner oder zur Laufzeit?

Die IDE ist seit 'ner Weile geskinnt (mit Design)
und leider sind die zu blöde den FormDesigner davon auszunehmen.

Im Designer kannst du bei deiner Form das Property StyleName auf "Windows" einstellen, dann sieht es dort so aus, wie später im Betrieb.
(persönlich würde ich es aber zur Laufzeit nicht so lassen)


Ich würde dir auch empfehlen nicht die neue automatisch generierte DPROJ zu nehmen, sondern ein neues VCL-Projekt zu erstellen und dessen DPROJ zu kopieren.
(es so nennen, wie dein Projekt oder den Projektnamen mit TextEditor drin an mehreren Stellen ändern)
Oder, da du ja garantiert eine Versionierung nutzt, einfach das neue Projekt drüberspeichern und dann alles, außer der DPROJ, reverten.
$2B or not $2B

Geändert von himitsu (13. Sep 2024 um 13:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#30

AW: Reise von Berlin nach Athens

  Alt 13. Sep 2024, 14:19
Die IDE ist seit 'ner Weile geskinnt (mit Design)
und leider sind die zu blöde den FormDesigner davon auszunehmen.
Das kann man aber doch abschalten: Tools - Optionen - Benutzeroberfläche - Formular-Designer - VCL-Stile aktivieren

Man sollte dann allerdings auch die IDE mit 96 DPI laufen lassen (falls das relevant ist), denn die fehlerhafte Darstellung eines runter-skalierten Forms ohne VCL-Style ist einfach nur grauenhaft.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      

 

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 21:02 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