AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Pointer zu String

Ein Thema von thomasschaf · begonnen am 2. Apr 2012 · letzter Beitrag vom 2. Apr 2012
Antwort Antwort
thomasschaf
(Gast)

n/a Beiträge
 
#1

Pointer zu String

  Alt 2. Apr 2012, 15:47
Hallo,

ich möchte ListView1.Selected.Data als String ausgeben.
Die Länge ist in ListView1.Selected.SubItems[3] zu finden.

Leider funktionieren diese nicht:

Delphi-Quellcode:
// gibt Access violation
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: boolean);
var
  str: string;
  len: integer;
begin
  len := StrToInt(ListView1.Selected.SubItems[3]);

  SetLength(str, len);
  Move(ListView1.Selected.Data, Pointer(str), len);

  Memo1.Text := str;
end;
Delphi-Quellcode:
// nur der erste Buchstabe erscheint
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: boolean);
var
  str: string;
  len: integer;
begin
  len := StrToInt(ListView1.Selected.SubItems[3]);

  SetLength(str, len);
  Move(ListView1.Selected.Data^, str[1], len);

  Memo1.Text := str;
end;
Vielen Dank
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Pointer zu String

  Alt 2. Apr 2012, 16:04
PChar ist ein Pointer auf einen String

Wird ein Fehelr angezeigt?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.097 Beiträge
 
Delphi 12 Athens
 
#3

AW: Pointer zu String

  Alt 2. Apr 2012, 16:07
Und das Wichtiges wurde wieder mal vergessen.
Wie ist der String dort reingekommen?


Wie ist Move in Lazrus deklariert?
Als offene Var/Const-Parameter oder als Pointer.


Warum den String nicht als weiteres SubItem?
Man muß ja nicht alle anzeigen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 2. Apr 2012 um 16:10 Uhr)
  Mit Zitat antworten Zitat
thomasschaf
(Gast)

n/a Beiträge
 
#4

AW: Pointer zu String

  Alt 2. Apr 2012, 16:15
Man könnte den String natürlich auch als weiteres Subitem einfügen oder ein Array of String nehmen und dort die Strings einfügen.
Das sind auch die geplanten Alternativen wenn das nicht geht.

Delphi-Quellcode:
var
  iRet: integer;
  buf: array[0..MAX_CHAR] of char;
  buf2: PChar;
...
begin
...
  iRet := recv(RawSocket, buf, sizeof(buf), 0);
  getmem(buf2, iRet);
  copymemory(buf2, @buf, iRet);
( listdata := ListView1.Items.Add; )
  listdata.Data := buf2;
...
end;
und...
Procedure Move(const source;var dest;count:SizeInt);

Geändert von thomasschaf ( 2. Apr 2012 um 16:18 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:02 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