AGB  ·  Datenschutz  ·  Impressum  







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

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, 16: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.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Pointer zu String

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

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

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

AW: Pointer zu String

  Alt 2. Apr 2012, 17: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

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

n/a Beiträge
 
#4

AW: Pointer zu String

  Alt 2. Apr 2012, 17: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 17:18 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:26 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