![]() |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
Hey Marco,
wenn ich die Komponente installieren will kommt folgender Fehler (den Int64 und den Indy10 Fehler habe ich beheben können, bei dem hier weiß ich nicht weiter) : [DCC Fehler] MaryTools.pas(166): E2251 Doppeldeutiger überladener Aufruf von 'StrPas' Der Fehler bezieht sich auf folgenden Code:
Delphi-Quellcode:
Hast Du eine Idee, was ich da machen kann?
function GetInfo(const aKey: string): string;
begin Result := ''; VerKey := Format('\StringFileInfo\%.4x%.4x\%s', [LoWord(Integer(VerBufValue^)), HiWord(Integer(VerBufValue^)), aKey]); if VerQueryValue(VerBuf, PChar(VerKey), VerBufValue, VerBufLen) then Result := StrPas(VerBufValue); //<---Fehler end; Habe Delphi XE, kann es daran liegen? lg, Marco |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
Delphi-Quellcode:
Es gibt zwei Version von StrPas ... einmal ANSI (PAnsiChar) und Unicode (PWideChar)
var
VerBufValue: Pointer; da VerBufValue aber nur als Pointer deklariert ist, kann Delphi nicht mehr entscheiden was genommen werden soll. Lösung: Deklariere VerBufValue als PChar. Dank einer automatischen Typkonvertierung könnte man ![]()
Delphi-Quellcode:
PS:
var
VerBufValue: PChar; ... function GetInfo(const aKey: string): string; begin VerKey := Format('\StringFileInfo\%.4x%.4x\%s', [LoWord(PInteger(VerBufValue)^), HiWord(PInteger(VerBufValue)^), aKey]); if VerQueryValue(VerBuf, PChar(VerKey), VerBufValue, VerBufLen) then Result := VerBufValue else Result := ''; end; Zitat:
|
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
Hey himitsu,
wow, nicht schlechte Reaktionszeit für einen aufgewärmten Thread :P Allein VerBufValue anders zu deklarieren hat nicht funktionert, da Delphi die Variable an anderer Stelle im Code nichtmehr geschmeckt hat. Habe es jetzt so gelöst:
Delphi-Quellcode:
function GetInfo(const aKey: string): string;
var PCharVerBufValue : PChar; //<--- neue Variable als PChar begin Result := ''; VerKey := Format('\StringFileInfo\%.4x%.4x\%s', [LoWord(Integer(VerBufValue^)), HiWord(Integer(VerBufValue^)), aKey]); if VerQueryValue(VerBuf, PChar(VerKey), VerBufValue, VerBufLen) then PCharVerBufValue := VerBufValue; //<---Wert wird aus VerBufValue in PChar "umformatiert" Result := SysUtils.StrPas(PCharVerBufValue); //<-- Delphi schluckt end; |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
Also verstehe ich es richtig, dass
- StrPas nur aus einem PChar einen PAnsiChar macht - und man das aber mittlerweile nichtmehr braucht weil Delphi das automatisch übernimmt wenn man einem PAnsiChar ein PChar zuweist? |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
![]() [edit] IIRC hat man das unter Delphi 1 noch gebraucht, ab Delphi 2 nicht mehr. [/edit] |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
StrPas macht aus einem PAnsiChar einen AnsiString
und seit Delphi 2009 wird auch noch aus einem PWideChar ein UnicodeString gemacht. Als es die Unicodeversion noch nicht gab, konnte man auch einen untypisierten Zeiger (Pointer) verwenden, welcher dann als PAnsiChar angesehn wurde, da es nur eine Variante von StrPas, mit einem Zeigertypen gab (die mit PAnsiChar/PChar). |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
mal noch ne andere Sache:
Ich hab die Update Komponente jetzt eingebunden und in dem Projekt ne neue Form angelegt. Heute morgen war meine exe noch schlanke 2,x MB groß, jetzt sind es fast 10 MB :pale: Dadurch dauert natürlich jedes Update 1000 mal länger *übertreib* Mal ehrlich, die units und die Komponente wiegen fast gar nichts, das sind ein paar kB. Auf der Form ist auch nix drauf außer n Memo und ne ProgressBar. Wo kommen denn von jetzt auf gleich die MBs her? Hab auch in den Projekt-Optionen nichts verändert von wegen Debug-Infos und so (die Suche stieß mich immer wieder auf dicke Debug-Infos in der EXE). Kommt das daher, dass in dem Programm jetzt die Indy-komponente integriert ist? Die hatte ich vor dem MSWebUpdate ja noch nicht? Was kann man da machen? |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
Zitat:
Hätte man auf das gehört, was ich auf Seite 6 im Beitrag #54 geschrieben habe, dann wäre es jetzt kein Problem Indy durch etwas Schlankeres zu ersetzen. |
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
Zitat:
|
AW: TMSWebUpdate - eine neue WebUpdate-Komponente
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab euch mal meinen Vortrag von den letzten Delphi-Tagen angehängt.
Wenn ihr nochmal nach lesen wollt, im Entwickler Mag. 04/10 ist der passende Artikel. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 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