ComboBox.AddItem(...) funktioniert nicht

Für Fragen rund um die Ide und zum Debugger
Antworten
noenglish
Beiträge: 36
Registriert: Di 4. Mai 2010, 09:14
OS, Lazarus, FPC: Win10 64Bit, L: 1.8.4 FPC 3.0.4

ComboBox.AddItem(...) funktioniert nicht

Beitrag von noenglish »

Seit ich Lazarus 1.0.14 installiert habe, funktioniert auf meinem Win7 64 Bit-Rechner

Code: Alles auswählen

iNdx: integer;
cboTxt: string;
:
ComboBox1.AddItem(sTxt, Tobject(iNdx));
 
nicht mehr. Ich erhalte folgende Fehlermeldung:

Konakte.pas(197,31) Error: Illegal type conversion: "LongInt" to "Tobject"

auch lesen

Code: Alles auswählen

iNdxS:= Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
wird nicht akzeptiert. Fehlermeldung:
Konakte.pas(384,11) Error: Illegal type conversion: "TObject" to "LongInt"

Das selbe Projekt funktioniert auf einem Win7 32 Bit-Rechner, auch Lazarus 1.0.14, fehlerfrei.

Hat jemand eine Ahnung ob man das abstellen kann?
Vielen Dank
noenglish

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2805
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: ComboBox.AddItem(...) funktioniert nicht

Beitrag von m.fuchs »

Dann hast du ein 64-Bit-Lazarus installiert. Dort ist ein Zeiger 64 Bit groß und damit ist eine Konversion tatsächlich nicht möglich. Wenn du statt Integer einen Int64 benutzt sollte es gehen. Oder noch besser nimmst du PtrInt, der entspricht dann immer der korrekten Größe (32/64 Bit).

Oder am allerbesten: du lässt das ganz. Das ist keine saubere Programmierung.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

noenglish
Beiträge: 36
Registriert: Di 4. Mai 2010, 09:14
OS, Lazarus, FPC: Win10 64Bit, L: 1.8.4 FPC 3.0.4

Re: ComboBox.AddItem(...) funktioniert nicht

Beitrag von noenglish »

Hallo m.fuchs,

Vielen Dank für die schnelle Antwort.
Ich verwende (vorläufig) PtrInt. Ich möchte aber sauber programmieren! Wie sieht in diesem Fall sauberer Programmkode aus?

Grüße
noenglish

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2805
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: ComboBox.AddItem(...) funktioniert nicht

Beitrag von m.fuchs »

Das kommt darauf an, was ist denn dein Endziel? Was für Daten stehen in dem Integer der übergeben wird?

Bei einer Datenspeicherung in der Combobox sollte es schon tatsächlich ein Abkömmling von TObject sein. Oder man speichert es woanders.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

noenglish
Beiträge: 36
Registriert: Di 4. Mai 2010, 09:14
OS, Lazarus, FPC: Win10 64Bit, L: 1.8.4 FPC 3.0.4

Re: ComboBox.AddItem(...) funktioniert nicht

Beitrag von noenglish »

Es handelt sich um den Index eines Elementes in einem Record-Array.

Wie man zu diesem
Oder am allerbesten: du lässt das ganz. Das ist keine saubere Programmierung.
Rat kommt, ohne die geplante Programmfunktion zu kennen, ist mir unverständlich!

noenglish

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2805
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: ComboBox.AddItem(...) funktioniert nicht

Beitrag von m.fuchs »

noenglish hat geschrieben:Es handelt sich um den Index eines Elementes in einem Record-Array.
Dann würde ich aus dem Record eine Klasse machen, aus dem Array ein TObjectList und die einzelnen Element direkt an die Einträge der Liste binden. Eventuell (dazu müsste man mehr vom Programm sehen) kann man auch auf die TObjectList verzichten.
noenglish hat geschrieben:Wie man zu diesem
Oder am allerbesten: du lässt das ganz. Das ist keine saubere Programmierung.
Rat kommt, ohne die geplante Programmfunktion zu kennen, ist mir unverständlich!
Durch Erfahrung, da braucht es dann auch die Funktion des Programms nicht mehr. Das was du da gemacht hast ist ein Hack. Du benutzt AddItem für etwas, wofür es nicht gedacht ist. Das kann funktionieren, aber wie du ja selbst gemerkt hast funktioniert es nicht immer.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten