Entwickler-Ecke
Internet / Netzwerk - Indy 10 Delphi 7
chickenfigt1989 - Sa 03.04.10 16:51
Titel: Indy 10 Delphi 7
Hey
Habe versucht die Indy 10 komponenten zu installieren.
Ich habe wie auf der Homepage von Indy beschrieben die Indy Komponenten versucht zu Installieren.
Zuerst die Packages IndyCore, IndySystem, IndyProtocols kompiliert anschließend wollte ich die dclIndyCore70 und dclIndyProtocols70 installieren, allerdings wenn ich die dclIndyCore70 installieren will kommt folgende Fehlermeldung:
Cannot load Package 'IndyCore70' It Contains unit IdGlobal which is also contained in package indy70.
Was muss ich nun tun damit es geht?
Mfg
Moderiert von
Narses: Topic aus VCL (Visual Component Library) verschoben am So 04.04.2010 um 11:20
elundril - Sa 03.04.10 19:16
ich würd mal sagen die Unit IdGlobal aus der Liste entfernen.
lg elundril
chickenfigt1989 - Sa 03.04.10 19:47
Also wen du meinst ausm Ordner löschen dan geht es nicht.
Habe es gerade Probiert es tritt folgender fehler wie vorhin auf nur anstelle idGlobal kommt jetzt idWinSock2
lg
elundril - Sa 03.04.10 20:08
Nein, ich mein nicht das du die datei löschen sollst. Datei löschen <> aus liste entfernen!
Einfachste Methode wäre das du die Packagedatei mit dem Windows-Editor öffnest und dann die Zeile (!) rauslöscht in der IdGlobal steht. dann sollte es funktionieren. Aja, vorher die sicherungskopie nicht vergessen falls was schiefläuft. ;)
(und das gleiche dann mit allen dateien die auch noch die gleiche meldung werfen.)
lg elundril
chickenfigt1989 - Sa 03.04.10 20:41
Das hab ihc gemacht und das von WinSock2 auch gleich aber dan kamm eni Violate Acess Fehler oder wie der heißt.
Ich installier erstmal delphi neu und Test es dan nochmal.
lg
Eidt:// Reicht es wen ich die Alten Indy'a aus der komponenten Palette lösche?
lg
Xentar - Sa 03.04.10 21:22
chickenfigt1989 hat folgendes geschrieben : |
Eidt:// Reicht es wen ich die Alten Indy'a aus der komponenten Palette lösche? |
ARGHS
das solltest du grundsätzlich tun, bevor du Indy 10 installierst. Danach sollte das auch mit der Installation funktionieren, ohne dass du die Projektdateien ändern musst..
chickenfigt1989 - Sa 03.04.10 21:48
Ja aber muss ich dan von Delphi ordner auch die Indy sachen rauslöschen oder reicht es nur in Delphi selber aus der Komponenten Palette zu nehmen?
Mfg
Xentar - Sa 03.04.10 22:01
chickenfigt1989 hat folgendes geschrieben : |
Ja aber muss ich dan von Delphi ordner auch die Indy sachen rauslöschen oder reicht es nur in Delphi selber aus der Komponenten Palette zu nehmen?
Mfg |
Es reicht, wenn du in Delphi die entsprechenden Packages deinstallierst, und das somit nicht mehr in der Komponentenpalette ist, ja.
Außerdem musst du in den Umgebungsoptionen den Suchpfad ändern, sodass er die alten Indy Dateien nicht mehr findet.
chickenfigt1989 - Sa 03.04.10 22:05
OKe habe die alten indys runter bis auf den Suchpfad. Ich finde da keinen wo Indy steht. Sind die Indy's etwa unter lib oder so drin?
Und jetzt wollt ich die dlcIndyCore70.dpk installieren jetzt kommt folgende Fehlermeldung:
[Error] dclIndyCore70.dpk(34): 'END' expected but identifier 'IndySystem70' found
Lg
Xentar - Sa 03.04.10 22:07
Tja, ohne nun den Quellcode zu kennen, wird das schwierig..
ich vermute aber mal, du hast beim "rückgängig machen" irgendwo ein ; eingesetzt, obwohl danach noch was folgt.
chickenfigt1989 - Sa 03.04.10 22:09
Oke die Indy komponenten hab ich jetzt drauf allerdings ein neues Problem.
Wenn ich eine andere Komponente installieren will erscheint immer
[Fatal Error] AccountSystem_Package.dpk(29): Required package 'IndyCore' not found
Lg
Xentar - Sa 03.04.10 22:13
AccountSystemPackage? Klingt nach was eigenem von dir.
Wenn du nun mal den Namen vergleichst, wird dir auffallen, dass das Ding nicht IndyCore, sondern IndyCore70 heißt.
chickenfigt1989 - Sa 03.04.10 22:18
Ja die habe ich mir machen lassen. Aber dankeschön, habe nun überall 70 angehängt und diese Komponente geht auch. Jetzt spinnt nur noch meine Update komponente.
Beim installieren kommt folgendes:
[Warning] Unit 'DECHash' implicitly imported into package 'Update_Package'
[Warning] Unit 'DECData' implicitly imported into package 'Update_Package'
[Warning] Unit 'DECFmt' implicitly imported into package 'Update_Package'
[Warning] Unit 'DECUtil' implicitly imported into package 'Update_Package'
[Warning] Unit 'CRC' implicitly imported into package 'Update_Package'
Cannot load Package 'indy70.' It contains unit 'IdWinsock2,' which is also contained in package IndySystem70
Jetzt hab ich aus der IndySystem70.dpk das Idwinsock2 rausgenommen aber es besteht weiterhin.
Lg
Xentar - Sa 03.04.10 22:23
chickenfigt1989 hat folgendes geschrieben : |
Cannot load Package 'indy70.' It contains unit 'IdWinsock2,' which is also contained in package IndySystem70 |
Sieht immer noch so aus, als würde irgendwo die alte Indy 9 verwendet.
Wo genau kann ich dir aber leider nicht sagen. Ich vermute mal, dass dein Update Package noch auf Indy 9 setzt?
Du musst dich schon entscheiden: Entweder ALLE Projekte auf die 10er zu portieren, oder bei der 9er zu bleiben..
Und hör bitte auf, da irgendwelche Sachen aus den Uses zu entfernen ;) Die werden schon ihren Sinn haben.
chickenfigt1989 - Sa 03.04.10 22:57
Ja ich hab se ja wieder hinzugefügt.
Es ist nicht so wie du meinst das einmal Indy 9 benutzt wird und einmal Indy 10
ich habe mir die komponenten machen lassen und es wurde nur Indy 10 benutzt.
Lg
Xentar - Sa 03.04.10 23:09
chickenfigt1989 hat folgendes geschrieben : |
Es ist nicht so wie du meinst das einmal Indy 9 benutzt wird und einmal Indy 10 |
Darauf deutet aber der Name "Indy70" hin. Die 70 steht für die Delphi-Versionsnummer, wofür das gedacht ist, also Delphi 7.
Bleibt noch "Indy". Diesen reinen Namen gibt es in Indy 10 nicht mehr - dort heißen sie IndyCore, IndySystem und IndyProtocol.
Also bleib ich bei meiner Meinung, dass du noch irgendwo Überreste der Indy 9 hast :D
Zur Not mal die Dateien löschen / das Verzeichnis umbenennen, sodass diese nicht mehr gefunden werden können.
chickenfigt1989 - Sa 03.04.10 23:17
Weist du wo sich die Indy Dateien befinden?
Will nichts falsches löschn.
Welches Verzeichniss umbenennen?
Lg
Xentar - Sa 03.04.10 23:22
Jetzt wirds schwer, da ich kein D7 zur Hand hab :D
Such mal nach Indy70.dpk Oder einfach nur nach Indy70 als Datei.
Ansonsten musst du wohl warten, ob dir jemand anderes weiterhelfen kann.
chickenfigt1989 - Sa 03.04.10 23:27
Ich habe mal die Suche benutzt von mein Windows und habe aber nur eine Indy70.bpl gefunden unter C:\Program Files\Borland\Delphi7\Bin
Ich lösch die jetzt einfach mal und mach mir davor aber noch ne Sicherungskopie.
Edit:// Nein hat auch nciths gebracht.
Xentar - Sa 03.04.10 23:46
Ähh, volle Fahrt zurück..
Hat nichts damit zu tun, dass es die Datei noch gibt, sondern dass diese anscheinend noch benutzt wird.
Poste mal bitte den Quellcode der Update_Package Projektdatei hier.
chickenfigt1989 - Sa 03.04.10 23:54
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281:
| unit UpdateSystem;
interface
uses Windows, SysUtils, Classes, IdHTTP, ContNrs, IniFiles, DECFmt, DECHash, Forms;
type TUpdateFileList = class; TUpdateFile = class;
TUpdate = class(TComponent) private FFileListURL: String; FFileSpaceURL: String; protected procedure GetFileList(AFileList: TUpdateFileList); procedure DownloadFiles(AFileList: TUpdateFileList); public function IsNewVersionAvailable(AFileList: TUpdateFileList): Boolean; procedure Update; published property FileListURL: String read FFileListURL write FFileListURL; property FileSpaceURL: String read FFileSpaceURL write FFileSpaceURL; end;
TUpdateFileList = class(TObjectList) protected procedure SetItem(Index: Integer; Value: TUpdateFile); function GetItem(Index: Integer): TUpdateFile; public procedure LoadFromFile(AFileName: String); procedure SaveToFile(AFileName: String); property Items[Index: Integer]: TUpdateFile read GetItem write SetItem; default; end;
TUpdateFile = class(TPersistent) private FFileName: String; FChecksum: String; FUpdated: Boolean; public property FileName: String read FFileName write FFileName; property Checksum: String read FChecksum write FChecksum; property Updated: Boolean read FUpdated write FUpdated; end;
procedure Register; function IsWindowsAdmin: Boolean; function IsFileWriteable(AFileName: String): Boolean;
const SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5)) ; SECURITY_BUILTIN_DOMAIN_RID = $00000020; DOMAIN_ALIAS_RID_ADMINS = $00000220;
implementation
procedure Register; begin RegisterComponents('Samples', [TUpdate]); end;
function IsWindowsAdmin: Boolean; var hAccessToken: THandle; ptgGroups: PTokenGroups; dwInfoBufferSize: DWORD; psidAdministrators: PSID; g: Integer; bSuccess: BOOL; begin Result := False;
bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True, hAccessToken) ; if not bSuccess then begin if GetLastError = ERROR_NO_TOKEN then bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hAccessToken) ; end;
if bSuccess then begin GetMem(ptgGroups, 1024) ;
bSuccess := GetTokenInformation(hAccessToken, TokenGroups, ptgGroups, 1024, dwInfoBufferSize) ;
CloseHandle(hAccessToken) ;
if bSuccess then begin AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, psidAdministrators) ;
for g := 0 to ptgGroups.GroupCount - 1 do if EqualSid(psidAdministrators, ptgGroups.Groups[g].Sid) then begin Result := True; Break; end;
FreeSid(psidAdministrators) ; end;
FreeMem(ptgGroups) ; end; end;
function IsFileWriteable(AFileName: String): Boolean; var hFile: THandle; begin Result := False;
hFile := CreateFile(PChar(AFileName), GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0,0);
if (hFile = INVALID_HANDLE_VALUE) then Result := GetLastError <> ERROR_ACCESS_DENIED else CloseHandle(hFile); end;
procedure TUpdate.Update; var Files: TUpdateFileList; begin if not IsFileWriteable(ExtractFilePath(ParamStr(0)) + 'temp.tmp') then raise Exception.Create('Sie haben nicht die nötigen Rechte um Dateien zu verändern! Starten Sie das Programm als Administrator.');
if FileExists(ExtractFilePath(ParamStr(0)) + '_' + ExtractFileName(ParamStr(0))) then DeleteFile(ExtractFilePath(ParamStr(0)) + '_' + ExtractFileName(ParamStr(0)));
Files := TUpdateFileList.Create; try if IsNewVersionAvailable(Files) then DownloadFiles(Files); finally Files.Free; end; end;
function TUpdate.IsNewVersionAvailable(AFileList: TUpdateFileList): Boolean; var Files: TUpdateFileList; iFile: Integer; begin Result := False;
if Assigned(AFileList) then Files := AFileList else Files := TUpdateFileList.Create;
if not Assigned(Files) then Exit;
Files.Clear; GetFileList(Files); for iFile := 0 to Files.Count - 1 do begin Application.ProcessMessages; if (not FileExists(ExtractFilePath(ParamStr(0)) + Files[iFile].FileName)) or (AnsiLowerCase(THash_MD5.CalcFile(ExtractFilePath(ParamStr(0)) + Files[iFile].FileName, TFormat_HEX)) <> AnsiLowerCase(Files[iFile].Checksum)) then begin Files[iFile].Updated := True; Result := True; end; end;
if (not Assigned(AFileList)) and Assigned(Files) then Files.Free; end;
procedure TUpdate.GetFileList(AFileList: TUpdateFileList); var s: String; http: TIdHTTP; fs: TFileStream; begin if Assigned(AFileList) then begin http := TIdHTTP.Create(nil); try fs := TFileStream.Create(ExtractFilePath(ParamStr(0)) + 'filelist.dat', fmCreate or fmOpenWrite); try http.Get(FFileListURL, fs); finally fs.Free; AFileList.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'filelist.dat'); end; finally http.Free; end; end; end;
procedure TUpdate.DownloadFiles(AFileList: TUpdateFileList); var iFile: Integer; http: TIdHTTP; fs: TFileStream; begin if Assigned(AFileList) then begin http := TIdHTTP.Create(nil); try for iFile := 0 to AFileList.Count - 1 do begin Application.ProcessMessages; if AFileList[iFile].Updated then begin if AnsiLowerCase(AFileList[iFile].FileName) = AnsiLowerCase(ExtractFileName(ParamStr(0))) then RenameFile(ParamStr(0), '_' + ExtractFileName(ParamStr(0)));
fs := TFileStream.Create(ExtractFilePath(ParamStr(0)) + AFileList[iFile].FileName, fmCreate or fmOpenWrite); try http.Get(FFileSpaceURL + AFileList[iFile].FileName, fs); finally fs.Free; end; end; end; finally http.Free; end; end; end;
procedure TUpdateFileList.SetItem(Index: Integer; Value: TUpdateFile); begin inherited Items[Index] := Value; end;
function TUpdateFileList.GetItem(Index: Integer): TUpdateFile; begin Result := inherited Items[Index] as TUpdateFile; end;
procedure TUpdateFileList.LoadFromFile(AFileName: string); var ini: TMemIniFile; iFile: Integer; NewFile: TUpdateFile; begin ini := TMemIniFile.Create(AFileName); try for iFile := 0 to ini.ReadInteger('General', 'FileCount', 0) - 1 do begin NewFile := TUpdateFile.Create; NewFile.FFileName := ini.ReadString('File' + IntToStr(iFile), 'FileName', ''); NewFile.FChecksum := ini.ReadString('File' + IntToStr(iFile), 'Checksum', ''); Add(NewFile); end; finally ini.Free; end; end;
procedure TUpdateFileList.SaveToFile(AFileName: string); var ini: TMemIniFile; iFile: Integer; begin ini := TMemIniFile.Create(AFileName); try ini.Clear; ini.WriteInteger('General', 'FileCount', Count); for iFile := 0 to Count - 1 do begin ini.WriteString('File' + IntToStr(iFile), 'FileName', Items[iFile].FileName); ini.WriteString('File' + IntToStr(iFile), 'Checksum', Items[iFile].Checksum); end; ini.UpdateFile; finally ini.Free; end; end;
end. |
So das is er
Xentar - So 04.04.10 00:19
Hm ne, das ist der Quellcode von der Unit.
Ich meinte eigentlich das Package, was diese Unit einbindet.
http://www.delphi-forum.de/viewtopic.php?p=601300#601300
Diesem Post entnehme ich, dass du versuchst, ein Package namens "Update_Package" zu installieren, das meinte ich.
Btw: Hier der Thread kommt einem Chat-Log ziemlich nahe :D
chickenfigt1989 - So 04.04.10 00:21
Meinst du das hier?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| package Update_Package;
{$R *.res} {$ALIGN 8} {$ASSERTIONS ON} {$BOOLEVAL OFF} {$DEBUGINFO ON} {$EXTENDEDSYNTAX ON} {$IMPORTEDDATA ON} {$IOCHECKS ON} {$LOCALSYMBOLS ON} {$LONGSTRINGS ON} {$OPENSTRINGS ON} {$OPTIMIZATION ON} {$OVERFLOWCHECKS OFF} {$RANGECHECKS OFF} {$REFERENCEINFO OFF} {$SAFEDIVIDE OFF} {$STACKFRAMES OFF} {$TYPEDADDRESS OFF} {$VARSTRINGCHECKS ON} {$WRITEABLECONST OFF} {$MINENUMSIZE 1} {$IMAGEBASE $400000} {$IMPLICITBUILD ON}
requires rtl, vcl, indy;
contains UpdateSystem in 'UpdateSystem.pas';
end. |
Xentar - So 04.04.10 00:31
Jo.
Und genau hier steht, dass das Paket Indy benötigt (Requires) wird, was wie oben schon angedeutet, auf Version 9 hinweist.
Was passiert, wenn du das durch IndyCore ersetzt, und dann versuchst neu zu kompilieren?
chickenfigt1989 - So 04.04.10 00:37
Lol, mir wurde Versichert das ich für alles Indy 10 brauche.
Habe es nun mit IndyCore ersetzt und neu Compiliert jetz kommt immer folgender Fehler:
[Fatal Error] Update_Package.dpk(30): Required package 'IndyCore' not found
lg
Edit://
Habe jetz IndyCore70 gemacht jetzt kommt aber
[Fatal Error] Update_Package.dpk(33): Unit IdHTTP was compiled with a different version of IdException.EIdException
Heist das die Komponente muss umgeschrieben werden?
lg
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!