Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#7

AW: Datensätze aus ner ListView ohne ID ändern?

  Alt 15. Okt 2012, 21:37
He he, wobei, aber dafür wird man in der Regel gesteinigt, da hab ich vor über 15 Jahren mal so ein Beispiel gesehen und der ist mir im Kopf geblieben, kann man ja den Pointer von Data als Integer-Variable missbrauchen. Ich hab es auch mal in meiner Unkenntnis gemacht und es hat funktioniert. Danach nie wieder, aber es hat funktioniert. Und es hat einen kleinen Vorteil.

Achtung! Ab hier Pfusch am Bau!

Also der Pointer von Data ist ja auch nur eine Art Integer. Nur ist sein Sinn eben Adressen zu beinhalten. Aber wenn man ja nur ein Integer irgendwo speichern muß, warum nicht dazu den Poniter dazu missbrauchen.

Statt
Delphi-Quellcode:
        Info := TInfo.Create;
        Info.ID := StrToIntDef(ExtractSubStr(sl[i], 4), -1);
das
Delphi-Quellcode:
           //gepfuscht
           ListItem.Data := Pointer(StrToIntDef(ExtractSubStr(sl[i], 4), -1));
Und schon ist die ID gespeichert.

Gelesen wird das so:

Statt
Delphi-Quellcode:
    Info := TInfo(Selected.Data);
    ShowMessage(IntToStr(Info.ID));
so
Delphi-Quellcode:
    //gepfuscht
    ShowMessage(IntToStr(Integer(Selected.Data)));
Der besondere Pfuschvorteil ist, dass keine Objekte freigegeben werden müssen. Man kann den Item einfach so löschen. Trotzdem kann es böse Folgen haben.

Wie gesagt, ich hab es mal vor etwa 15 Jahre in einem eigentlich guten und professionellem Tutorial gesehen. Ich schätze der Typ wollte sich in seinem ersten Beispiel auf das Wesentliche konzentrieren und hat statt einem Objekt einen Integer-Wert an Data gehangen.

Das nur als so geschrieben, bitte nicht nachmachen.
  Mit Zitat antworten Zitat