Variable .s dann Syntaxfehler

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
felix
Beiträge: 32
Registriert: 24.10.2004 07:56
Wohnort: Giengen/Brenz
Kontaktdaten:

Variable .s dann Syntaxfehler

Beitrag von felix »

Hallo,

ich habe folgendes Problem,

ich definiere eine Variable in meinen Programm so:

Code: Alles auswählen

pfad_k1.s = "d:\html\webcam\cam1_image1.jpg"
pfad_k2.s="d:\html\webcam\cam2_image1.jpg"
pfad_k3.s="d:\html\webcam\cam3_image1.jpg"
pfad_k4.s="d:\html\webcam\cam4_image1.jpg"

pfad_archiv_k1.s="d:\apachefriends\xampp\htdocs\cam1_bilder\cam1_image1"
pfad_archiv_k2.s="d:\apachefriends\xampp\htdocs\cam2_bilder\cam2_image1"
pfad_archiv_k3.s="d:\apachefriends\xampp\htdocs\cam3_bilder\cam3_image1"
pfad_archiv_k4.s="d:\apachefriends\xampp\htdocs\cam4_bilder\cam4_image1"
Die ftp_* Variablen sind auch alle definiert.
dann will ich das ganze per ftp hochladen, umbennen - verschieben und löschen

mit

Code: Alles auswählen

result =FTP_Upload(ftp_server_ip,ftp_user,ftp_passwort,21,ftp_pfad,pfad_k1,"cam1_image1.jpg")
     If result = 1
      uhr$= FormatDate("%hh%ii%ss", Date())
      datum$ = FormatDate("%dd%mm%yyyy", Date())
      RenameFile(pfad_k1,pfad_archiv_k1+"_"+datum$+"_"+uhr$+".jpg")
      DeleteFile(pfad_k1)
      SetGadgetText(#Text_4,uhr$+": Bild Kamera 1 übertragen und verschoben")
     EndIf
und bekomme bei dem RenameFile einen SyntaxError und bei DeleteFile einen Bad Parameter Type: a String is expected fehler.

Ich habe das ganze bereits unter PB 3.93 geschrieben und auch als lauffähige exe. Nur jetzt gehts mit PB 3.94 nicht mehr.

Muss ich den Variablen ein $ Zeichen mitgeben ?

mfg

Stefan
Zuletzt geändert von felix am 22.09.2005 08:58, insgesamt 1-mal geändert.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Woher soll der Compiler Wissen, das: "pfad_archiv_k1") ein String ist? Wurde nirgends dekariert, abgesehen davon sind Datum und Uhrzeit ja auch leer :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
felix
Beiträge: 32
Registriert: 24.10.2004 07:56
Wohnort: Giengen/Brenz
Kontaktdaten:

Beitrag von felix »

Die Variablen sind bereits definiert. ZUr besseren Anschauung habe ich den Code in meiner Anfrage etwas erweitert.

Das ganze lief ja so unter PB 3.93 ohne Probleme, es gibt ja auch eine lauffähige .exe , diese Arbeit seit fast 3 Monaten ohne Probleme. Nun wollte ich das Programm weiterschreiben.

Ich habe aber in der Zwischenzeit meinen PC neu installiert und PB 3.94 drauf, und nun tritt eben dieser Fehler auf und ich weiss nicht warum.

Zwischenzeitlich habe ich hinter den Variablen ein $ stehen und nun gehts.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Der Unterschied zwischen $ und .s ist ja nur der, das Du $ immer angeben mußt, währendessen .s nur bei der ersten Benutzung angegeben werden muß. Wenn die Deklarierung z.B. in einer If Anweisung erfolgt, die nicht eintrifft, ist die Variable auch nicht deklariert und somit ein Long.
DefType oder Protected können hier helfen Fehler zu vermeiden
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

ts-soft hat geschrieben:Wenn die Deklarierung z.B. in einer If Anweisung erfolgt, die nicht eintrifft, ist die Variable auch nicht deklariert und somit ein Long.
Das stimmt so nicht ganz.
Du musst unterscheiden zwischen dem Kompiliervorgang und der Laufzeit. Die Variablen werden praktisch schon beim Kompilieren deklariert, egal, ob da irgendeine If-Anweisung wahr ist oder falsch.
Bespiel:

Code: Alles auswählen

If 1 = 0
  a.s = "1"
  Debug "a.s wurde deklariert"
Else
  Debug "a.s wurde nicht deklariert"
EndIf
a + "hallo"
Debug a
Aber das nur mal so nebenbei.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@NicTheQuick
Ups, Du hast Recht :oops:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten