![]() |
Fehlermeldung bei Verwendung von AssignFile
Hallo Leute,
bin gerade dabei ein altes Programm von D5 auf D7 umzustellen. Dabei haut mir der D7 eine Fehlermeldung um die Ohren mit der ich absolut nicht gerechnet habe und die ich mir auch absolut nicht erklären kann. Bei dem Code
Delphi-Quellcode:
meint er: [Fehler] Es gibt keine überladene Version von 'AssignFile', die man mit diesen Argumenten aufrufen kannvar FPassword : File of TPassword; Password : TPassword; i : integer; begin result := ''; AssignFile(FPassword, sCUCMPath + '\cucm32.cpw'); TPassword sieht übrigens so aus:
Delphi-Quellcode:
Anyone any ideas?
TPassword = record
acData : array[0..255] of char; acControl : array[0..7] of char; end; |
Re: Fehlermeldung bei Verwendung von AssignFile
ersetz mal char mir string[1]
|
Re: Fehlermeldung bei Verwendung von AssignFile
Hilft nicht, ich habe auch spasshalber mal die char-arrays durch integer ersetzt. Ergebnis ist das gleiche.
|
Re: Fehlermeldung bei Verwendung von AssignFile
Von welchem Typ ist sCUCMPath?
|
Re: Fehlermeldung bei Verwendung von AssignFile
sCUCMPath ist string, das kanns nicht sein. Wenn ich File of TPassword durch TextFile ersetze ist der Compiler auch an dieser Stelle erst mal glücklich.
|
Re: Fehlermeldung bei Verwendung von AssignFile
also bei mir sieht ne speichern procedure so aus
Delphi-Quellcode:
procedure save;
var f : FILE OF meinrecord; dateiname : STRING; rec: meinrecord begin ASSIGN(f,dateiname); {Dateiname initialisieren} REWRITE(f); {Datei falls vorhanden überschreiben} WRITE(f,rec); {Record schreiben} CLOSE(f); {Datei schließen} end; |
Re: Fehlermeldung bei Verwendung von AssignFile
Vielleicht gibt es irgendwo eine Klasse TPassword, die sich mit der Deklaration beißt. Was passiert denn, wenn Du den Record mal nach TPasswort umbenennst und FPassword dann als file of TPasswort deklarierst?
|
Re: Fehlermeldung bei Verwendung von AssignFile
Es muss irgendein Seiteneffekt oder eine Einstellungssache sein. Wenn ich ein neues Projekt mit D7 anlege und mir den Code da rein haue geht's auch ohne Mecker. Es kann aber nicht an TPassword liegen weil es mir auch anderen Stellen passiert wo ich mit typisierten Dateien arbeite.
|
Re: Fehlermeldung bei Verwendung von AssignFile
Da können wir aus der Ferne leider auch nur raten. Und das kommt bei jeder typisierten Datei im Projekt?
|
Re: Fehlermeldung bei Verwendung von AssignFile
Hallo,
dasda kann ich mit Delphi 7 problemlos kompilieren:
Delphi-Quellcode:
Versuch mal, ob bei Dir die im Beispiel auskommentierte Version funktioniert. Eventuell hast Du ja irgendeine Unit eingebunden, die ebenfalls ein AssignFile enthält, dass aber andere (oder keinen) Parameter erwartet.
procedure TForm1.Button1Click(Sender: TObject);
Type TPassword = record acData : array[0..255] of char; acControl : array[0..7] of char; end; var FPassword : File of TPassword; Password : TPassword; i : integer; sCUCMPath : String; begin sCUCMPath := 'C:'; AssignFile(FPassword, sCUCMPath + '\cucm32.cpw'); // System.AssignFile(FPassword, sCUCMPath + '\cucm32.cpw'); end; |
Re: Fehlermeldung bei Verwendung von AssignFile
@Detlef:
Zumindest in einer Unit ist es so. Ich müßte in meinem Projekt mal die anderen Units überprüfen. @Stephan: Den Verdacht das da auf eine andere Unit verwiesen wird ist mir auch schon gekommen, ich werde mal in diese Richtung weiterforschen. Mal schauen was sich durch den Wechsel von D5 auf D7 so alles geändert ahben könnte. Der von dir gepostete Code funktioniertt in einer seperaten Unit einwandfrei, in die Unit wo er eigentlich rein soll aber nicht, deutet also stark auf ein Problem mit den eingebundenen Units hin. |
Re: Fehlermeldung bei Verwendung von AssignFile
Du könntest ja mal in einem Testprojekt die uses-Klausel so erweitern, dass dieselben Units in derselben Reihenfolge wie in Deinem "Problemkind" eingebunden werden. Kommt dort dann dieselbe Fehlermeldung, weiß man, in welcher Richtung man weiterzuforschen hat.
|
Re: Fehlermeldung bei Verwendung von AssignFile
Zitat:
Delphi-Quellcode:
System.AssignFile(FPassword, sCUCMPath + '\cucm32.cpw');
|
Re: Fehlermeldung bei Verwendung von AssignFile
Versuche mal die relativen Pfade zu vermeiden
|
Re: Fehlermeldung bei Verwendung von AssignFile
Welche relativen Pfade?
|
Re: Fehlermeldung bei Verwendung von AssignFile
Zitat:
|
Re: Fehlermeldung bei Verwendung von AssignFile
Zitat:
|
Re: Fehlermeldung bei Verwendung von AssignFile
Mit System.AssignFile geht es
|
Re: Fehlermeldung bei Verwendung von AssignFile
Dann ist AssignFile nochmal in irgendeiner anderen eingebundenen Unit deklariert. Das sollte sich mit "In Dateien suchen" finden lassen.
|
Re: Fehlermeldung bei Verwendung von AssignFile
Hallo,
Zitat:
Gruß Hawkeye |
Re: Fehlermeldung bei Verwendung von AssignFile
Bei Delphi 7 auch schon? Na gut, wenn es so geht, ist das natürlich schneller.
|
Re: Fehlermeldung bei Verwendung von AssignFile
// Edit: Quark. :oops:
Wäre es nicht besser und etwas sicherer noch eine kleine Verschlüsselung der Daten einzubauen ?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
type TPassword = record acData : array[0..255] of char; acControl : array[0..7] of char; end; var FPassword : File of TPassword; Password : TPassword; i : integer; sCUCMPath : String; function Moppel(XPasswords: TPassword): TPassword; var n: integer; begin ZeroMemory(@Result, sizeof(TPassword)); for n := 0 to length(XPasswords.acData)-1 do begin if n <= length(XPasswords.acControl)-1 then Result.acControl[n] := chr( n+1 xor ord(XPasswords.acControl[n]) ); Result.acData[n] := chr( n+1 xor ord(XPasswords.acData[n]) ); end; end; begin ZeroMemory(@Password, sizeof(TPassword)); Password.acData := 'Heidi Müller'; Password.acControl := 'DATABASE'; Password := Moppel(Password); sCUCMPath := 'C:'; AssignFile(FPassword, sCUCMPath + '\Users\Admin-User\Desktop\cucm32.cpw'); rewrite(FPassword); write(FPassword, Password); CloseFile(FPassword); showmessage(format('acData: %s'#13'acControl: %s', [Password.acData, Password.acControl])); // lesen AssignFile(FPassword, sCUCMPath + '\Users\Admin-User\Desktop\cucm32.cpw'); reset(FPassword); read(FPassword, Password); CloseFile(FPassword); Password := Moppel(Password); showmessage(format('acData: %s'#13'acControl: %s', [Password.acData, Password.acControl])); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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