Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: C++ zu Delphi funktion umschreiben

  Alt 5. Okt 2010, 21:17
Du kopierst einfach den gesamten Dateiinhalt in "mem" rein und läßt dann folgendes drüberlaufen
Delphi-Quellcode:
var mem: TByteDynArray;
  title_name: AnsiString
  "sonstiges": Integer;

str := mem[8] or (mem[9] shl 8);
pos := mem[12] or (mem[13] shl 8);
indx := 0;
title_name := '';
while str < Length(mem) do
begin
  if mem[str] = 0 then break;
  if not lstrcmpA(@mem[str], 'TITLE') then
  begin
    SetString(title_name, PAnsiChar(@mem[pos]));
    //title_name := Copy(title_name, 1, 63);
    break;
  end;
  while mem[str] <> 0 do inc(str);
  inc(str);
  inc(pos, mem[28 + indx] or (mem[29 + indx] shl 8));
  inc(indx, 16);
end;

// Ergebnis: title_name
hab auch glaich mal das Unicodeproblemchen der API angepaßt
und über das TByteDynArray wurde auch gleich der fehlende Resourcen-Schutzblock kompensiert (das "mem" im C-Code ist ein Pointer, dessen Speicherfreigabe nicht sichergestellt war).

@Klaus01:
- für den Resourcenschutzblock
- und unbedingt S: AnsiString , da er D2009 nutzt und das Unicode hier bestimmt negative Auswirkungen zeigt
- da, wo du keine Ahnung hast ... den letzen Befehl in eine neue Zeile und schon wird es verständlicher
(Werte/Integer/Bytes in IFs werden als "Boolean" angesehn ... <> 0)
- ich glaub swapBytes ist nicht nötig (Low, High)
- statt SmallInt lieber Word verwenden ... nicht daß man hier eventuell noch in eine Endlosschleife tappt
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Okt 2010 um 21:28 Uhr)
  Mit Zitat antworten Zitat