![]() |
Viele PChars in einem Record
Hallo Delphi-Fans,
ich habe ein Problem mit einem Record, in dem viele Variablen vom Typ PChar gespeichert werden sollen. Der Record ist wie folgt aufgebaut:
Delphi-Quellcode:
In einem Testprogramm erzeugt die Methode GetInfo eine Instanz des Typs TUpdateInfo:
TUpdateInfo = RECORD
ApplicationTitle : PChar; ApplicationName : PChar; ApplicationPath : PChar; ApplicationExeName : PChar; UpdatePath : PChar; SourceURL : PChar; CurrentVersion : TVersion; LangId : Integer; END;
Delphi-Quellcode:
Wenn ich diese Methode debugge, steht in jedem Teil von Result der richtige Wert.
function TForm1.GetInfo:TUpdateInfo;
begin Result.ApplicationExeName := PChar(Application.ExeName); Result.ApplicationName := PChar('Update-Test'); Result.ApplicationPath := PChar(ExtractFileDir(Application.ExeName)); Result.ApplicationTitle := PChar(Application.Title); Result.CurrentVersion := CreateVersion(2, 5, 0); Result.LangId := langGer; Result.SourceURL := PChar('http://intranet.tng.ad/DB/UPDATE/Test/'); Result.UpdatePath := PChar(GetTempPath); end; In der Variable, der dieses Result zugewiesen wird, stehen fehlerhafte Werte:
Delphi-Quellcode:
In diesem Fall würde in Info etwas falsches stehen.
var Info : TUpdateInfo;
begin Screen.Cursor:=crHourGlass; Info := GetInfo; Mit scheint es, als ob es beim Zuweisen des Inhalts für Info irgendeinen Fehler gibt. Falls sich jemand gut mit PChars auskennt und eine Lösung / einen Fehler findet, wäre ich dankbar. :-D |
Re: Viele PChars in einem Record
Zitat:
|
Re: Viele PChars in einem Record
Ok, verstehe,
aber wie behebe ich diesen Fehler. |
Re: Viele PChars in einem Record
Ich habe mittlerweile selber eine Lösung gefunden.
Die poste ich mal, falls irgendwann auch andere ein solches Problem haben: Mit "StrNew" kann man einen PChar so kopieren, dass er auch nach dem Methodendurchlauf zur Verfügung steht, und der Zeiger auf korrekten Inhalt zeigt. Damit der Speicher nicht zugeschrieben wird, muss der Zeiger jedoch irgendwann mit "StrDispose" freigegeben/gelöscht werden. |
Re: Viele PChars in einem Record
Du könntest ein array of Char nehmen, dann hast du dieses Problem nicht und du kannst sicher sein, dass der Speicher wieder freigegeben wird, wenn die Variable ihren Gültigkeitsbereich verlässt.
|
Re: Viele PChars in einem Record
Können "Char Arrays" den auch bei Dlls verwendet werden?
Ich hatte nämlich vor, einer Dll Informationen via TUpdateInfo zu schicken. Auf jeden Fall klappt es im Moment :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz