Wie PPropInfo verwenden???

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
thosch
Beiträge: 307
Registriert: Mo 10. Jul 2017, 20:32

Re: Wie PPropInfo verwenden???

Beitrag von thosch »

@af0815:

Welche Voraussetzungen muss denn ein OI taugliches Widgetset erfllen?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5738
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Wie PPropInfo verwenden???

Beitrag von af0815 »

Wo soll das Zeug laufen ? Läuft Lazarus, läuft der OI.

Ansonsten, probier mein Beispiel dort.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

thosch
Beiträge: 307
Registriert: Mo 10. Jul 2017, 20:32

Re: Wie PPropInfo verwenden???

Beitrag von thosch »

Wie wäre mal ein wirklich uraltes nicht mehr genutztes, aber dennoch unter Spielefraks immer noch beliebtes und damit rege genutztes und somit nach wie vor präsentes Betriebssystem, wenn auch nicht für produktive Anwendungen?

Würde ich auch dann noch Support bekommen bis der OI läuft und ein eventueller Formdesigner, der die veränderten Widgets dann so anzeigt wie sie auf dem Bildschirm säter erscheinen? Warum müssen solche alten Betriebssysteme außen vor bleiben, zumal sie nach wie vor verwendet werden?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5738
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Wie PPropInfo verwenden???

Beitrag von af0815 »

thosch hat geschrieben:
Mi 25. Jan 2023, 21:48
Wie wäre mal ein wirklich uraltes nicht mehr genutztes, aber dennoch unter Spielefraks immer noch beliebtes und damit rege genutztes und somit nach wie vor präsentes Betriebssystem, wenn auch nicht für produktive Anwendungen?

Würde ich auch dann noch Support bekommen bis der OI läuft und ein eventueller Formdesigner, der die veränderten Widgets dann so anzeigt wie sie auf dem Bildschirm säter erscheinen? Warum müssen solche alten Betriebssysteme außen vor bleiben, zumal sie nach wie vor verwendet werden?
Weil die Spielefreaks das für Spiele verwenden. Ich würde die Widgetsets auch nicht unbedingt auf den MSX2 portieren, außer ich wäre ein extremer Freak für die Plattform.

Damit sind wir bei deiner Frage - warum alte Betriebssysteme außen vor bleiben - weil sich keine Freaks für die Plattform gefunden haben, die das implementiert haben und auch warten. Hey, Lazarus und FPC sind OpenSource ! Ich vermute das es den FPC für deine Plattform gibt, also kannst du ja einmal testen, was dir auf der Plattform fehlt. Ausserdem ging es dir um die PPropInfo, der OI ist ein Beispiel wie man das extrem verwendet, also kann man dort in die Sourcen reinschauen. Habe ich für den Bugreport gemacht und wenn man sich lange genug damit beschäftigt, versteht man die Konzepte auch (oder man fragt gezielt nach)

Es geht darum sich damit zu beschäftigen, du willst den OI nachbauen - Ok - jetzt hast du ein Beispiel im Massstab 1:1 für den Nachbau als Source vorliegen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

thosch
Beiträge: 307
Registriert: Mo 10. Jul 2017, 20:32

Re: Wie PPropInfo verwenden???

Beitrag von thosch »

Wie soll ich da alleine im stillen Kämmerlein ohne jegliche Hilfe das Zeug verstehen wenn ich schon bei GetStrProp() meine EPropertyError Exception kriege obwohl ich meine Basisklasse von TPersistent abgeleitet und den Schlter {$Typinfo} in diueser Unit bereits nach hieiger Hilfestellung gesetzt habe? Was meinst Du da mit geziellt nachfragen, da ist bei Quelltextstudium des OI erst mal alles neu da weiß ich zunächst gar nicht wo ich mit Nachfragen anfangen soll.

Abgesehen davon müsste doch verdammt noch mal dieses Scheiß GetStrProp erst mal funktionieren, dann könnte ich mich nach und nach rantasten, immer mehr Property Typen unterstützen. Wenn aber schon so ne simple StrProperty nicht funktioniertt vergeht mir die Lust. Die Bibliothek für die ich das brauche, läuft übrigens in Windows, Linux und .... Also keine Panik das könnte für Euchn alle von Nutzen sein, nur wird eben auch noch zusätzlich go32 unterstützt, ZUSÄTZLICH zu den anderen moderneren Plattformen, die jeder heute verwendet. Kann doch kein Verbrechen sein da dieses alte Betriebssystem auch noch mit zu unterstützen. Die GUI um die es geht kennt bisher folgende Widgets:

- Checkbox
- RadioButton
- ScelectBox (ListBox)
- DropBox (Combobox)
- EditableSelectBox (Wie Listbox nur Einträge editierbar)
- PageControl
- Grid
- V/H Schollbar
- UpDown
- Progressbar
- Button
- MainMenu
- PopUpMenu
- Textanzeigebox
- Eingabefeld
- Label (mein TTextfield ist so ein Label)

Wobei die Namen der Widgets bei Übereinstimmung mit den Lazarus Kompos auch die gleice Funktion haben.

UND NOCH besser: Diese GUI unterstützt sogar Linux Framebuffer.

Könnte für den Rasbberry interessant sein. Wollt Ihr dann die Wigets mühsam von Hand positionieren, statt in einem Comfortablen Form Designer zu arbeiten???

Kann ich mir nicht vorstellen!
Zuletzt geändert von thosch am Fr 27. Jan 2023, 13:32, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 9859
Registriert: Mo 11. Sep 2006, 19:01

Re: Wie PPropInfo verwenden???

Beitrag von theo »

thosch hat geschrieben:
Do 26. Jan 2023, 09:23
wenn ich schon bei GetStrProp() meine EPropertyError Exception kriege obwohl ich meine Basisklasse von TPersistent abgeleitet und den Schlter {$Typinfo} in diueser Unit bereits nach hieiger Hilfestellung gesetzt habe?
Hänge doch mal ein kompilierbares Minimalbeispiel an, welches den Fehler zeigt.
Mit Kaffeesatzlesen wird dir niemand helfen können.

thosch
Beiträge: 307
Registriert: Mo 10. Jul 2017, 20:32

Re: Wie PPropInfo verwenden??? Hier Beispielapp!

Beitrag von thosch »

Ok, dann will ich mal so ein Minimalbeispiel geben. Hier ist es:

Code: Alles auswählen

program example;
{$Mode Objfpc}{$H+}{$TypInfo}

uses Classes,Sysutils,Typinfo;

type

  { TmyBaseClass }

  TmyBaseClass = class(TPersistent)
  private
    FAnyField: Integer;
  public
    constructor create;
  end;

  { TMyAnchestorClass }

  TMyAnchestorClass = class(TMyBaseClass)
  private
    FStringProperty: String;
    FIntegerProperty: Int64;
  public
    constructor Create;
  published
    property StringProperty: String read FStringProperty write FStringProperty;
    property IntegerProperty: Int64 read FIntegerProperty write FIntegerProperty;
  end;

{ TMyAnchestorClass }

constructor TMyAnchestorClass.Create;
begin
  inherited Create;
end;

{ TmyBaseClass }

constructor TmyBaseClass.create;
begin
  inherited Create;
  FAnyField := 10;
end;

var MyClass: TmyAnchestorClass;
    Loop,Count: Integer;
    List: TPropList;

begin
  Loop := 0;

  MyClass := TmyAnchestorClass.Create;
  Count := GetPropList(MyClass.ClassInfo, [tkInteger, tkChar, tkFloat,
    tkInt64, tkUString,tkWString, tkWChar, tkLString, tkEnumeration
     ,tkSString, tkBool, tkQWord, tkUChar, tkAString
      ], @List);

  SetStrProp(MyClass, List[Loop]^.Name,'Meine_Beispielklasse');
  inc(Loop);

  SetInt64Prop(MyClass, List[Loop]^.Name,45000);
  writeln(GetStrProp(MyClass, List[Loop]^.Name));
  writeln(GetInt64Prop(MyClass, List[Loop]^.Name));
  writeln('Zurück mit << Enter >> .. ');
end.
Die Exception wird geworfen, hier aber allgemeine Access Violation. Dürfte dennoch an meinem Problem liegen.

Benutzeravatar
theo
Beiträge: 9859
Registriert: Mo 11. Sep 2006, 19:01

Re: Wie PPropInfo verwenden???

Beitrag von theo »

Dein Problem liegt in der Indexvariablen.
Wie kommst du darauf, dass List[0] auf ein StringProperty verweist?
Beim Auslesen ist Loop dann einfach beide Male auf 1.

Das könntest du schon auch selber herausfinden. :wink:

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5738
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Wie PPropInfo verwenden???

Beitrag von af0815 »

Wenn du den Debugger verwendest, dann würdest du sehen, das nur das Element 0 der List einen gültigen Eintrag hat. Du erhöhst ohne erkennbaren Grund den Loop-Zähler und greifst auf ein nil Element ungeprüft zu. Was soll der Code ?

Lasse ich den Loop Zähler auf 0 so geht es.

Wozu gibt es Debugger und Tracing im Code ?!
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 9859
Registriert: Mo 11. Sep 2006, 19:01

Re: Wie PPropInfo verwenden???

Beitrag von theo »

@af0815: Nicht ganz, es sind schon zwei Elemente da, nur nicht in der Reihenfolge, die er annimmt, bzw. beim Auslesen vergisst er die Loop-Variable komplett.
Wenn man sich die Mühe macht das auszugeben, kommt man auf die Reihenfolge:
IntegerProperty (Int64)
StringProperty (AnsiString)
Aber ja, es ist so grundsätzlich nicht sinnvoll.

thosch
Beiträge: 307
Registriert: Mo 10. Jul 2017, 20:32

Re: Wie PPropInfo verwenden???

Beitrag von thosch »

@theo:
Wie ist es denn dann sinnvoll. Gib doch mal nen wirksamen Tipp. Warum so Scheibchenweise? Lernen Informatiker so zumindest die super fähigen, die Euch später nützlich sein werden. Lernen die so, ist das Euer Auswahlkriterium? Wer das Programmierhandwerk auf diese Weise kapieren lernt ist das der von Euch gesuchte fähige Programmierer?

Dann sorry! Ich bin ein völlig anderer Lerntyp ich lernee völlig, ja grundlegend anders!

Wird wohl dann nix, mit der Teamarbeit, ich will dann nur dieses Scheiß Projekt noch zuende bringen und danach tschüss Programmierung!


@af0815:
Da werd ich wohl mal wieder ne neue Lazarusversion brachen, die 2.2.0RC2 tut es nicht, da funktioniert der Debugger nicht, bei der Vorgängerversion tat er das, aber man wird permanent zum Update gezwungen, weil irgendwelche Scheiß Bibliotheken die man nutzen will die jeweils neuste Compilerversion voraussetzen statt dass Ihr mal aufwärtskompatibel programmiert. Mit der neuen Version mache ich exakt dasselbe was ich mit der alten Version schon gemacht habe. Wozu soll ichn da diesen Versions Hickhack ständig mitmachen.

War früher mal anders. Turbo Pascal 3.02, mein erstes Pascal.

Warum soll ich eine neue Version anschaffen, was kann die:

Nun, die Version 4.0 hatte das Unit Konzept eingeführt und größere Datentypen.

Das nenne ich einen sinnvollen Grund für das Update.

Aber warum soll ich das heute noch machen, was ist der Nutzen?
Ich mache mit der neuen Version exakt das gleiche wie mit der alten. Heutzutage ist das Updaten eher einn systemtreues Verhalten, ohne Nutzen nur Loyalität gegenber der Gesellschaft die einen selber dann im Regen stehen lässt!!! Wo bleibt da die Belohnung ses Systemkonformen Verhaltens?

Nachhaltig ist das auch nicht. Bei Hardware Update fällt unnützer Elektronikschrott an, obwohl die alten Rechner noch funktionieren, soll man sie wegschmeißen, nur weil neue auf dem Markt sind.

Aber Fliegen, in den Urlaub fliegen darf man wegen CO2 Ausstoß nicht mehr. Im Zweifelsfall tritt ein weltumspannendes tödliches Virus auf, das aber die Bosse verschont.

Die Rechnerproduktion stößt aber auch Unmengen von CO2 aus.

Warum testet Ihr die neuen Versionen von Lazarus nicht richtig? Da hättet Ihr sehen müssen dass der Debugger in der Version 2.2.0RC2 nicht funktioniert.

So habe ich es halt mit meiner Version bis hierher probiert. Scheiße!!! Alles in der kostbarwenmn Freizeit ohne die geringste Bezahlung! Ja ich aucdh nicnt nur Ihr, ich programmiere genau so in meiner kostbaren so knappen Freizeit!

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5738
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Wie PPropInfo verwenden???

Beitrag von af0815 »

Du wirst gar nicht zum Update gezwungen, gehe auf deine alte funktionierende Version zurück und gut ist es. Vor allen, eine Lazarus 2.2.0RC2 sagt alles. Das ist ein Releasekandidat, aber nicht die letzte stabile Version der V2,2.0.

Und bei mir hat der Debugger immer funktioniert. Egal auf welcher stabilen Version. Und falls er nicht geht, dann kann man im Forum bzw. internationalen Forum um Hilfe bitten.

Wenn du Probleme mit der Freizeit hast, geh spazieren und lass die Hände vom Computer. Du musst es ja nichts machen, es ist deine Freizeit.

Mir langt dein Ton und damit habe ich fertig.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

thosch
Beiträge: 307
Registriert: Mo 10. Jul 2017, 20:32

Re: Wie PPropInfo verwenden???

Beitrag von thosch »

Im Forum um Hilfe bitten. Wie bitte??????

So wie hier. Wo die Tipps dann scheibcenweise kommen wie von @theo???


Nein danke. Wenn dann schon bitte richtige Hilfe? Anders als hier. Die lib ist Open Source GPL da haben alle was davon. Da sollte ich auch mal Hilfe bekommen dürfen. Die "Allgemeinheit" lädt sich das Zeug dann auch ohne weitere Gegenleistung runter.

Benutzeravatar
theo
Beiträge: 9859
Registriert: Mo 11. Sep 2006, 19:01

Re: Wie PPropInfo verwenden???

Beitrag von theo »

Wie bist du denn drauf? :shock: :shock:

Ich habe dir gesagt, was mit deinem Beispielcode nicht stimmt.
Was willst du denn sonst noch wissen?

Aber bitte nicht in diesem Ton!

PascalDragon
Beiträge: 666
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Wie PPropInfo verwenden???

Beitrag von PascalDragon »

thosch hat geschrieben:
Fr 27. Jan 2023, 12:41
Aber warum soll ich das heute noch machen, was ist der Nutzen?
Ich mache mit der neuen Version exakt das gleiche wie mit der alten. Heutzutage ist das Updaten eher einn systemtreues Verhalten, ohne Nutzen nur Loyalität gegenber der Gesellschaft die einen selber dann im Regen stehen lässt!!! Wo bleibt da die Belohnung ses Systemkonformen Verhaltens?
Ein Update von FPC und/oder Lazarus bringt nicht nur neue Features, sondern behebt auch Fehler. Vielleicht stoßt du mit deinem Code noch nicht auf einen solchen Fehler, aber wenn es so ist, dann kann es sein, dass dieser in einer neueren Version bereits behoben ist. Und auch ganz wichtig: es kostet dich nichts. Im Gegensatz zu kommerzieller Software ist Open Source da komplett kostenfrei. Es kann natürlich vorkommen, dass bei einem Update auch Sachen herausgenommen werden, zum Beispiel die Unterstützung für veraltete Betriebssysteme (so unterstützt FPC zum Beispiel schon seit Jahren kein Windows 9x oder 2000 mehr). Das wäre dann natürlich ein Grund eventuell auf einer älteren Version zu bleiben (oder man patcht sich die Unterstützung zurecht). Und dann gibt es noch Leute, die das Verhalten bestimmter Fehler ausnutzen (sei es absichtlich oder unabsichtlich). Abgesehen davon gibt es bei Open Source Software keinen wirklichen Grund auf einer älteren Version festzuhalten.
thosch hat geschrieben:
Fr 27. Jan 2023, 12:41
Warum testet Ihr die neuen Versionen von Lazarus nicht richtig? Da hättet Ihr sehen müssen dass der Debugger in der Version 2.2.0RC2 nicht funktioniert.
Wie af0815 gesagt hat: das ist eine Release Candidate Version, nicht die finale Version. Es kann sein, dass dort der Debugger aus welchen Grund auch immer nicht funktioniert hat. In der Version 2.2.0 ist dies auf jeden Fall nicht so, zumindest nicht im Allgemeinen, denn sonst hätten sich schon mehr Nutzer beschwert. Es kann natürlich sein, dass du irgendeine spezielle Konstellation hast, aber da hilft es nicht Arme-herumwirbelnd herum zu rennen, sondern dann schreibt man eben was falsch läuft und entweder wird es einem erklärt was man falsch macht oder es stellt sich heraus, dass da tatsächlich noch ein Problem ist. Aber ohne Kommunikation und das auf sachlichen Niveau und nicht in der Variante „alles Sch***e!!!111elf” wird das natürlich nichts.
FPC Compiler Entwickler

Antworten