Autor Beitrag
SebastianVB
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 11.05.03 21:54 
Ich habe ein dynamisches Array vom Typ Char und würde dieses gerne in einen AnsiString konvertieren. Kann mir jemand sagen, wie das auf einfache Weise funktioniert ? Also praktisch:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
...
var pBuffer : Array Of Char;
      strData : AnsiString;
begin

  SetLength(pBuffer, iCount);
  // Aktionen mit pBuffer
  strData := ???

end;
Alni
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 205

Win 2000, XP, SuSe, Debian
D5 Prof, D7 Prof, Kylix
BeitragVerfasst: So 11.05.03 23:24 
Schau mal hier das könnte dir weiterhelfen:

www.delphi-forum.de/viewtopic.php?t=11120

_________________
MfG Alex
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 12.05.03 02:11 
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender: TObject);
var
  szBuffer : array [0..255] of Char;
  astr     : AnsiString;
begin
  lstrcpy(szBuffer, 'Hello World');
  astr := String(szBuffer);
  ShowMessage(astr);
end;
SebastianVB Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 12.05.03 14:57 
Titel: Funktioniert leider nicht :-(
Delphi stürzt in der Zeile, in der nach String konvertiert werden soll, ab. Liegts vielleicht daran, dass es in euren Beispielen ein statisches Array ist, und bei mir ein dynamisches ?

Ich hab folgenden Code:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var m_paBuffer : Array Of Char

        ....

function CFile.GetData(Start, Length : LongInt) : AnsiString;
var iBytesRead : DWord;
begin

        // Buffer für Daten anlegen
        SetLength(self.m_paBuffer , Length);

        // FilePointer setzen
        SetFilePointer(self.m_hFile, Start, nil, FILE_BEGIN);

        // Daten einlesen
        ReadFile(self.m_hFile, self.m_paBuffer, Length, iBytesRead, nil);

        // Eingelesene Daten zurückgeben
        GetData := String(self.m_paBuffer);  // <--- Absturz

end;
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 13.05.03 07:45 
Probier´s mal so:
ausblenden Quelltext
1:
2:
3:
4:
5:
ReadFile(self.m_hFile,
  @self.m_paBuffer[0],
  Length,
  iBytesRead,
  nil);

bzw.
ausblenden Quelltext
1:
2:
3:
4:
5:
ReadFile(self.m_hFile,
  pointer(@self.m_paBuffer)^,
  Length,
  iBytesRead,
  nil);

Falls es immer noch abstürzt, mach das gleiche auch bei der Zuweisung:
ausblenden Quelltext
1:
Result := string(@self.m_paBuffer[0]);					

bspw.