String zurückgeben

Anfängerfragen zum Programmieren mit PureBasic.
kajott
Beiträge: 35
Registriert: 21.11.2005 02:00

String zurückgeben

Beitrag von kajott »

Hi,

folgender Code soll mir einen String aus einer Prozedur in mein Hauptprogramm zurückgeben:

Code: Alles auswählen

Procedure.s satz_bilden()
   
    string1$="test0 "

    string1$=string1$+"test"+"  test2"
  
  
  ProcedureReturn string1$
EndProcedure
Die Prozedur wird im Hauptprogramm mit

Code: Alles auswählen

satz1=satz_bilden()
aufgerufen.

Der Compiler bricht mit der Fehlermeldung:

Code: Alles auswählen

Trying to write a numeric value into string variable
ab.
Die Prozedure ist im Hauptprogramm am Anfang mit "Declare" deklariert.

Warum kann ich den String nicht zurückgeben?

Für Antworten im voraus herzlichen Dank![/code]
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: String zurückgeben

Beitrag von DarkDragon »

kajott hat geschrieben:

Code: Alles auswählen

satz1=satz_bilden()
Wer Englisch kann ist im Vorteil:

Code: Alles auswählen

satz1.s = satz_bilden()
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
kajott
Beiträge: 35
Registriert: 21.11.2005 02:00

Beitrag von kajott »

Vergessen zu erwähnen

"satz1.s" wird am Anfang schon als "satz1.s" schon deklariert.

Und die Compilermeldung sagt, das ich einen numerischen Wert in einen String schreiben will!

Ich bekomme also keinen String, trotz "Procedure.s satz_bilden()", zurückgeliefert.
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 »

Deiner Beschreibung nach, sieht Dein Code in etwas so aus:

Code: Alles auswählen

DefType.s satz1

Procedure.s satz_bilden()
  string1$="test0 "
  string1$=string1$+"test"+"  test2"
  ProcedureReturn string1$
EndProcedure

satz1=satz_bilden()
Debug satz1
Funktioniert einwandfrei
PBDebugger hat geschrieben:test0 test test2
Zuletzt geändert von ts-soft am 27.11.2005 18:42, insgesamt 1-mal geändert.
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
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

kajott hat geschrieben:Vergessen zu erwähnen

"satz1.s" wird am Anfang schon als "satz1.s" schon deklariert.

Und die Compilermeldung sagt, das ich einen numerischen Wert in einen String schreiben will!

Ich bekomme also keinen String, trotz "Procedure.s satz_bilden()", zurückgeliefert.

Code: Alles auswählen

Procedure.s satz_bilden()
   
    string1$="test0 "

    string1$=string1$+"test"+"  test2"
 
 
  ProcedureReturn string1$
EndProcedure

satz1.s = ""
satz1=satz_bilden()

Debug satz1
funktioniert doch.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
kajott
Beiträge: 35
Registriert: 21.11.2005 02:00

Beitrag von kajott »

Code: Alles auswählen

Declare satz_bilden()


DefType.s satz1

satz1=satz_bilden()
Debug satz1
End


Procedure.s satz_bilden()
  
  string1$=" testting"
  
  string1$=string1$+"test"+"  test2"
  
  
  ProcedureReturn string1$
EndProcedure


läuft bei mir nicht!

Compilermeldung: "Trying to write a numeric value into string variable"

Erstellt mit PB 3.94
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 »

Das Declare ist verkehrt in der ersten Zeile, mach mal Declare.s draus :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
kajott
Beiträge: 35
Registriert: 21.11.2005 02:00

Beitrag von kajott »

Ohgott!

Gerade gesehen, das ich declare mit ".s" angeben muss! Hat sich gerade erledigt! :-) Trotzdem danke und sorry nochmal!
Antworten