Combobox Zusatzeintrag

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.

Combobox Zusatzeintrag

Beitragvon Cool-Tuc » 6. Jul 2016, 15:10 Combobox Zusatzeintrag

Hallo alle,
mit der Version 1.4? hat folgende Konstruktion, zum Eintrag in eine ComboBox eine zusäzliche ID zu speichern, funktioniert:

Code: Alles auswählen
cmbCombo.Items.AddObject(sTemp, TObject(lID))

Nun, nach Umstellung auf Version 1.6 funktioniert es leider nicht mehr. Die Fehlermeldung lautet:

Code: Alles auswählen
Illegal type conversion: "Longint" to "TObject"

Setze ich an Stelle "lID" eine feste Zahl ein, gibt es keine Fehlermeldung mehr...

Wo ist der Denkfehler?

Danke

udo
Cool-Tuc
 
Beiträge: 95
Registriert: 6. Apr 2011, 16:10

Beitragvon Cool-Tuc » 6. Jul 2016, 15:43 Re: Combobox Zusatzeintrag

...man nenne mir den Sinn :shock: :?:

ersetzte ich den Datentyp der Variable "lID" von "Integer" durch "PtrUint" funktioniert es wieder....

udo
Cool-Tuc
 
Beiträge: 95
Registriert: 6. Apr 2011, 16:10

Beitragvon theo » 6. Jul 2016, 16:25 Re: Combobox Zusatzeintrag

Cool-Tuc hat geschrieben:...man nenne mir den Sinn :shock: :?:


64bit Pointer?
theo
 
Beiträge: 8167
Registriert: 11. Sep 2006, 18:01

Beitragvon Cool-Tuc » 6. Jul 2016, 20:09 Re: Combobox Zusatzeintrag

...ist mir schon klar, aber ich dachte einem TObjekt kann ich alles übergeben, bzw. kann jeden Datentyp annehmen...
Cool-Tuc
 
Beiträge: 95
Registriert: 6. Apr 2011, 16:10

Beitragvon m.fuchs » 7. Jul 2016, 09:23 Re: Combobox Zusatzeintrag

Da denkst du völlig falsch. Einem TObject soll man eigentlich nur ein TObject oder einem Nachfahren davon übergeben. Wenn du hier einfach so eine Zahl reinhaust ist das Murks.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
Lazarusforum e. V.
 
Beiträge: 2067
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (Lazarus 2.0, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon af0815 » 8. Jul 2016, 06:46 Re: Combobox Zusatzeintrag

Was du willst, wird als Boxing/Unboxing bezeichnet. Siehe https://en.wikipedia.org/wiki/Object_type_(object-oriented_programming)#Boxing

In Dephi wurde es früher so benutzt wie du sagst (ich kenne es von D3-D7), da waren die Typen von der Länge im Speicher auch passend. Die Länge des Zeigers von TObject war genauso lange wie das was man dort eingetragen hat, damit war der Zugriff über einen einfachen Cast möglich. Ist aber auch nicht mit jedem Typ gegangen und man musste wissen was man tut.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3686
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon Cool-Tuc » 15. Jul 2016, 16:49 Re: Combobox Zusatzeintrag

...bekomme ich leider nicht hin, irgendwie laufe ich immer auf einen "typconversion" - Fehler wenn ich den Wert wieder auslesen möchte...
Hat vit. jemand einen kleinen CodeSchnipsel, wie ich einen einfachen ID-Wert (zusätzlich/unsichtbar) in die Combo hineinbekomme und wieder auslesen kann?

Danke

Udo
Cool-Tuc
 
Beiträge: 95
Registriert: 6. Apr 2011, 16:10

Beitragvon theo » 15. Jul 2016, 17:10 Re: Combobox Zusatzeintrag

Einfach probieren bis es klappt.. :lol:

Code: Alles auswählen
var Valu:Cardinal;
begin
  Valu:=13;
  ComboBox1.Items.AddObject('test',TObject(IntPtr(Valu)));
  ShowMessage(IntToStr(PtrUInt(ComboBox1.Items.Objects[0])));
end
theo
 
Beiträge: 8167
Registriert: 11. Sep 2006, 18:01

Beitragvon m.fuchs » 15. Jul 2016, 20:20 Re: Combobox Zusatzeintrag

Ich weine gleich. :cry:
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
Lazarusforum e. V.
 
Beiträge: 2067
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (Lazarus 2.0, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon MacWomble » 14. Jan 2019, 20:13 Re: Combobox Zusatzeintrag

Und wie setze ich dann die Combobox auf den richtigen Eintrag wenn ich valu 13 habe?
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
Lazarusforum e. V.
 
Beiträge: 793
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.90 / FP 3.3.1 Rev 42237 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon Michl » 14. Jan 2019, 20:25 Re: Combobox Zusatzeintrag

MacWomble hat geschrieben:Und wie setze ich dann die Combobox auf den richtigen Eintrag wenn ich valu 13 habe?
z.B.
Code: Alles auswählen
  AIndex := ComboBox1.Items.IndexOfObject(TObject(PtrInt(Valu)));
  if AIndex >= 0 then
    ComboBox1.ItemIndex := AIndex;   
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2320
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon MacWomble » 14. Jan 2019, 20:42 Re: Combobox Zusatzeintrag

Danke, das funktioniert !
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
Lazarusforum e. V.
 
Beiträge: 793
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.90 / FP 3.3.1 Rev 42237 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon pluto » 14. Jan 2019, 20:45 Re: Combobox Zusatzeintrag

Einfach probieren bis es klappt.

Und warum es nicht gleich richtig machen und z.b. eine Extra Klasse nehmen?
Dann wäre es einfacher und Strukturierter....

Code: Alles auswählen
 
  TMyObject = class
    MeinFeld:Integer;
   ...
  end;
 
var
  MyObject:TMyObject;
begin
  MyObject:=TMyObject.Create;
  MyObject.MeinFeld:=64;
  ComboBox1.Items.AddObject('Name',MyObject);
 


Das geht immer und das kann man sehr schön noch weiter Optimieren.
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
Lazarusforum e. V.
 
Beiträge: 7006
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon MacWomble » 14. Jan 2019, 20:50 Re: Combobox Zusatzeintrag

Aber beim Auslesen oder Anzeigen ändert sich ja trotzdem nichts, oder?

Für weitere Posts bitte die Umleitung: https://www.lazarusforum.de/viewtopic.p ... 03#p107403 nehmen. :shock:
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
Lazarusforum e. V.
 
Beiträge: 793
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.90 / FP 3.3.1 Rev 42237 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

• Themenende •

Zurück zu Sonstiges



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried