Hallo,
ich habe ein Problem mit Assign. Beim Kompilieren der Zeile "Assign (CsvFile, OutCsvFileName);" kommt die Meldung
Error: Wrong number of parameters specified for call to "Assign"
Error: Found declaration: Assign(TPersitent).
Komischerweise funktioniert Assign vorher in einer andern procedure bei einem weiteren Textfile korrekt "Assign (LogFile, LogFileName);".
Ich habe daraufhin mal bei Assign (CsvFile, OutCsvFileName) "Finde Deklaration von Assign" aufgerufen und lande in "classesh.inc" und "procedure Assign(Source: TPersistent); virtual;"
Mache ich auf dem ersten Assign (LogFile, LogFileName) "Finde Deklaration von Assign", lande ich aber in "systemh.inc" und "Procedure Assign(out t:Text;const s:rawbytestring);"
Ich denke, der Verweis nach "systemh.inc" ist korrekt.
Warum funktioniert das beim 2. Aufruf nicht, wieso wird ein falscher Aufruf benutzt ?
Was muss ich machen, das das korrekt funktioniert ?
Über etwas Hilfe freue ich mich - Danke vorab !
Gruß
Uli
Problem mit Assign (Textfile, Textfilename)
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Problem mit Assign (Textfile, Textfilename)
Benutz einfach statt Assign die gleichfunktionierende Prozedur AssignFile. Dann wirst du das Problem nicht mehr haben.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Problem mit Assign (Textfile, Textfilename)
Vor Jahren wurde Assign (mit Files) zu AssignFile umbenannt, da es zu Namenskonflikten gekommen ist.tolleware hat geschrieben: Sa 4. Jan 2025, 11:04 Warum funktioniert das beim 2. Aufruf nicht, wieso wird ein falscher Aufruf benutzt ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 47
- Registriert: Fr 21. Feb 2020, 19:17
- OS, Lazarus, FPC: Win10/64
- CPU-Target: 64 Bit
- Wohnort: Osterholz-Scharmbeck
Re: Problem mit Assign (Textfile, Textfilename)
oder schreib den Unitnamen explizit davor: System.Assign()
-
- Beiträge: 954
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Problem mit Assign (Textfile, Textfilename)
Die Klasse TPersistent hat eine Method Assign mit anderen Parametern. In allen Klassen, die von TPersistent direkt oder indirekt erben hat diese Method nach den allgemeinen Sprachregeln von Object Pascal Vorrang zu der globalen Funktion aus System mit dem gleichen Namen. Du kannst dies umgehen, indem du entweder den Alias AssignFile nutzt, der extra aus diesem Grund eingeführt wurde, oder du nutzt den vollen Namen System.Assign.tolleware hat geschrieben: Sa 4. Jan 2025, 11:04 Warum funktioniert das beim 2. Aufruf nicht, wieso wird ein falscher Aufruf benutzt ?
Ein gleiches Problem besteht übrigens auch bei TForm.Close und System.Close.
FPC Compiler Entwickler
Re: Problem mit Assign (Textfile, Textfilename)
Danke an Alle, AssignFile() statt Assign() hat geholfen.