AGB  ·  Datenschutz  ·  Impressum  







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

Probleme mit Data (Pointer)

Offene Frage von "Chatfix"
Ein Thema von ranftl · begonnen am 22. Mai 2006 · letzter Beitrag vom 26. Feb 2007
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
ranftl

Registriert seit: 15. Mär 2006
23 Beiträge
 
#1

Probleme mit Data (Pointer)

  Alt 22. Mai 2006, 12:15
Hallo zusammen!

Ich habe folgendes Problem ich habe ein ListItem, jetzte würde ich gerne in
Data was ja einen Pointer erwartet einen String abspeichern.

Also einfach in OnShow oder so abspeichern und irgendwann im Programm in einer
anderen Funktion wieder rausholen.

Leider jedoch klappt das gar nicht.
Kleiner Code Ausschnitt:

Delphi-Quellcode:
tmp := FieldByName('Test1').AsString + FieldByName('Test2').AsString;
ListItem.Data := Pointer(tmp);
wieder abrufen versuche ich folgendermaßen
tmp := String(ListItem.data); Wobei tmp in beiden Fällen eine String-Variable ist.
Ich habe auch schon verschiedene Kombination mit den ^ und dem @ operatoren versucht.
Leider bis jetzt ohne Erfolg

Vielleicht könnte mir kurz mal jemand helfen
Danke

lg
ranftl
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Probleme mit Data (Pointer)

  Alt 22. Mai 2006, 12:22
Hi ranftl!

Bei deinem Code existiert der String deiner Wünsche nur so lange, wie du in der Prozedur bleibst, in der dieser Code ausgeführt wird. Probier es lieber mal so (aus dem Kopf):
Delphi-Quellcode:
procedure TuWas;
var
  LText : PString;
begin
  New(LText);
  LText^:=FieldByName('Test1').AsString + FieldByName('Test2').AsString;
  ListItem.Data := Pointer(tmp);
end;

procedure HolDenText;
var
  LText : PString;
begin
  Ltext:=ListItem.Data;
  Self.Caption:=LText^;
end;

//und irgendwann noch den Text freigeben
// Dispose(PString(ListItem.Data));
Und wenn du mal Zeit hast, lies mal 1-2 Tutorials über Pointer.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
ranftl

Registriert seit: 15. Mär 2006
23 Beiträge
 
#3

Re: Probleme mit Data (Pointer)

  Alt 22. Mai 2006, 12:31
Hallo chaosben!

Danke für deine schnelle Antwort!
Klappt super!

Schönen Tag noch!
ranftl
  Mit Zitat antworten Zitat
Benutzerbild von Chatfix
Chatfix

Registriert seit: 10. Dez 2003
Ort: Schneeberg
39 Beiträge
 
#4

Re: Probleme mit Data (Pointer)

  Alt 23. Feb 2007, 11:36
Muss ich Dispose auch machen wenn ich das ListItem lösche oder ListView.Clear mache oder ist es dann unnötig?
Un sollte nicht auch LText freigegeben werden?
Marcel Kukelka
MfG Chatfix
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Probleme mit Data (Pointer)

  Alt 23. Feb 2007, 16:59
Bevor du eine ListView.Clear machst (oder ein Item löschst), musst du natürlich alle Strings freigeben ... und das eben mit dem von dir angeführten Dispose.

Dispose(PString(ListItem.Data));
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von Chatfix
Chatfix

Registriert seit: 10. Dez 2003
Ort: Schneeberg
39 Beiträge
 
#6

Re: Probleme mit Data (Pointer)

  Alt 23. Feb 2007, 18:28
Also muss ich vor dem Clear sämtliche ListItems durchlaufen?

Was passirt wenn ich das Programm ohne Dispose beende? Wird der Speicher dann freigegeben oder muss ich mich da auch drum kümmern?

Sorry hab noch nich so viel mit Pointern gemacht.
Marcel Kukelka
MfG Chatfix
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Probleme mit Data (Pointer)

  Alt 24. Feb 2007, 11:18
Ja, vor dem Clear müsstest du alle Items durchlaufen ... es sei denn, es gibt ein Ereigniss beim Freigeben eines Items (á la VirtualTree).

Und wenn du es nicht tust, sollte eigentlich Memoryleaks übrigbleiben. Am besten kann man das ab BDS4 mit dem Befehl
ReportMemoryLeaksOnShutdown:=true; testen.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von Chatfix
Chatfix

Registriert seit: 10. Dez 2003
Ort: Schneeberg
39 Beiträge
 
#8

Re: Probleme mit Data (Pointer)

  Alt 24. Feb 2007, 18:07
Woher weis ich ob dem Itemw as ich löschen will ein Pointer hinterlegt ist?
Wenns keinen gibt kommt nämlich eine Zugriffsverletzung.

Oder einfach zwischen try except schreiben?
Marcel Kukelka
MfG Chatfix
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Probleme mit Data (Pointer)

  Alt 24. Feb 2007, 18:54
Moin Marcel,

bevor Du etwas freigibst, musst Du nur prüfen, ob etwas enthalten ist:

if Assigned(ListItem.Data) then
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Probleme mit Data (Pointer)

  Alt 24. Feb 2007, 18:59
... was vorraussetzt, dass der pointer vor allocation / nach disposal ordentlcih genillt wird. Merke: Wilder Pointer gefährlicher als nil-Pointer!
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 11:50 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