Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

error 4: Duplicated definition bei Wechsel von 0.24 auf 1.05

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
R2D2



Anmeldungsdatum: 03.05.2016
Beiträge: 5

BeitragVerfasst am: 03.05.2016, 10:25    Titel: error 4: Duplicated definition bei Wechsel von 0.24 auf 1.05 Antworten mit Zitat

Hallo Kollegen,

ich binde ein paar oefter benoetigte Programmteile ueber #INCLUDE "RD\lib_RD_String.bas" in den Programmcode ein. Bisher habe ich noch Freebasic 0.24 benutzt.
Ich wollte das gleiche Programm jetzt mit Freebasic 1.05 (64bit) kompilieren, bekomme aber bei allen types und functions, die ueber die Includeanweisung eingefuegt werden die Fehlermeldung "error 4: Duplicated definition". Die Namen kommen mit Sicherheit nicht doppelt vor und es sind auch keine Basic-Schluesselwoerter.
Beispiel:
Code:
type RD_chopped_string_type
   word(100) as String
   words as Byte
   comment as string
end Type

' separate string into words

Declare function RD_chop_string(linein as string, separators as string, mode As Integer, commentseparator as String) as RD_chopped_string_type

' linein: string to be separated
' separators: string of characters that separate string into words
#Define RD_inc_empty 0 ' mode=0: two subsequent separators will create
'     an empty word (e.g. "123,,ABC")
#Define RD_no_empty 1  ' mode<>0: multiple subsequent separators will be
'     handled as one
' commentseparator: character that denominates a comment. All subsequent
'     characters will be returned in the .comment-string.


Die Dateien die ich einfuege sind im Verzeichnis
"Freebasic/inc/RD"

Freebasic 1.01 32bit erzeugt die gleichen Fehlermeldungen.
Mit Freebasic 0.24 funktioniert alles.

Was mache ich hier falsch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 873
Wohnort: Ruhrpott

BeitragVerfasst am: 03.05.2016, 11:03    Titel: Antworten mit Zitat

Hallo R2D2 und willkommen im Forum!

Bei mir (FB 1.05/32bit) compiliert dein geposteter Code ohne Fehlermeldung, an FB liegt es also nicht. Hast du vielleicht dieselbe Datei mehrfach eingebunden? Dann hagelt es nämlich Fehlermeldungen. Zumindest FbEdit (für andere Editoren kann ich das nicht sagen) lädt und öffnet in diesem Fall auch die Quelldatei, in der die doppelte Definition vorkommt.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
R2D2



Anmeldungsdatum: 03.05.2016
Beiträge: 5

BeitragVerfasst am: 03.05.2016, 12:31    Titel: Antworten mit Zitat

Das war schnell. Danke!

Ist tatsaechlich mehrfach eingebunden. Und zwar passiert folgendes:
Hauptprogramm (Ausschnitt):
Code:
            #include  "vbcompat.bi"   ' benoetigt fuer 'filexist='.
            #INCLUDE  "dir.bi"         ' benoetigt fuer 'Dir'.
            #INCLUDE  "RD\lib_RD_Array.bas" ' benoetigt fuer Sortieren und Duplikate entfernen
            #INCLUDE  "RD\lib_RD_String.bas" ' aufspalten der eingelesenen Zeile etc.
            Dim As String revision="0.3a"
            #Define extended ' Befehle fuer ausfuehrlichere Ausgabe mitkompilieren



"RD\lib_RD_Array.bas" und "RD\lib_RD_String.bas" stehen beide im Verzeichnis "C:\Program Files\FreeBASIC-1-05-0-win64\inc\RD".
Nach dem Kompilieren hat "RD\lib_RD_Array.bas" den gleichen Inhalt wie "RD\lib_RD_String.bas"!
Ich habe die original "RD\lib_RD_Array.bas" wieder in das Verzeichnis kopiert und nochmal kompiliert. Habe das mehrfach ausprobiert. Jedesmal wird der Inhalt ausgetauscht, sogar dann, wenn die Dateien read only sind.

FB 1.05 64bit steht bei mir im Verzeichnis "C:\Program Files" und FB 1.01 32bit sowie FB0.24 im Verzeichnis "C:\Program Files (x86)".
Nur bei FB 0.24 klappt es richtig.

Ich verwende uebrigens FBEdit welches in allen FB-Verzeichnissen an der selben Stelle steht. Der Compiler-Pfad ist bei allen mit $A\.. angegeben, Aufrufparameter bei allen fbc -s console.

Bin im Moment etwas ratlos.
Ich kann dir gerne mal den code inkl. Includes zuschicken. Sind 35kB. (Ich moechte nur nicht das Forum damit zumuellen.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 03.05.2016, 12:45    Titel: Antworten mit Zitat

Lies mal das hier Once, vielleicht Hilft das.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 873
Wohnort: Ruhrpott

BeitragVerfasst am: 03.05.2016, 13:15    Titel: Antworten mit Zitat

Für umfangreichere Codes gibt es die Rubrik NoPaste, die kannst du dann hier ins Forum verlinken.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
R2D2



Anmeldungsdatum: 03.05.2016
Beiträge: 5

BeitragVerfasst am: 03.05.2016, 13:40    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Für umfangreichere Codes gibt es die Rubrik NoPaste, die kannst du dann hier ins Forum verlinken.

Gruß
grindstone


Danke, aber sieht so aus, also ob das Problem nichts mit FB zu tun hat.
Ich habe ein und die selbe Datei aus dem Explorer heraus (per Rechtsklick) einmal mit FBEdit und einmal mit Notepad geoffnet und zwei verschiedene Inhalte angezeigt bekommen. Nachdem ich den Rechner neu gestartet habe kompiliert das jetzt auch mit 1.05. (Problem mit Platten-Cache/SSD?)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 929
Wohnort: Austria

BeitragVerfasst am: 03.05.2016, 14:33    Titel: Antworten mit Zitat

Falls du Windows Vista oder höher verwendest und du die Datei in einem Ordner speicherst, der Admin-Rechte zum Schreiben benötigt könntest du auch mit der Dateisystem-Virtualisierung in Kontakt kommen. Siehe https://support.microsoft.com/en-us/kb/927387

Die INI-Datei von FBEdit ist z.B. davon betroffen, wenn es in %ProgramFiles% liegt.
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
R2D2



Anmeldungsdatum: 03.05.2016
Beiträge: 5

BeitragVerfasst am: 03.05.2016, 14:53    Titel: Antworten mit Zitat

St_W hat Folgendes geschrieben:
Falls du Windows Vista oder höher verwendest und du die Datei in einem Ordner speicherst, der Admin-Rechte zum Schreiben benötigt könntest du auch mit der Dateisystem-Virtualisierung in Kontakt kommen. Siehe https://support.microsoft.com/en-us/kb/927387

Die INI-Datei von FBEdit ist z.B. davon betroffen, wenn es in %ProgramFiles% liegt.


Danke fuer den Hinweis!
Habe Win 8.1 und in "Program Files" kann man nur mit Admin-Rechten schreiben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 100

BeitragVerfasst am: 03.05.2016, 22:08    Titel: Antworten mit Zitat

okay dieses verhalten in fbedit kann ich bei mir nicht
nachvolziehen @grindstone.

nicht desto troz, ein #include "ONCE" sollte schon eniges an doppel includes
vermeiden.

soweit geb ich dirda recht. zwinkern

salute

Edit: alles klar meine leizung hier is unter aller sau, daher ignoriert diesen post.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
R2D2



Anmeldungsdatum: 03.05.2016
Beiträge: 5

BeitragVerfasst am: 04.05.2016, 04:34    Titel: Antworten mit Zitat

Haubitze hat Folgendes geschrieben:
nicht desto troz, ein #include "ONCE" sollte schon eniges an doppel includes
vermeiden.


Hatte auch "once" probiert, aber das Problem geht wohl eher in die Richtung von dem was St_W erwaehnt hat.
Ich habe FB jetzt in ein ein ungeschuetztes Verzeichnis verschoben. Bis jetzt funktioniert es.

Danke an alle fuer die Antworten!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz