[erledigt] String mit Anführungszeichen an Proc übergeben

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

[erledigt] String mit Anführungszeichen an Proc übergeben

Beitrag von scholly »

moin, moin...

Ich bin grade dabei, in meinem Proggi von Subroutinen auf Procedures umzustellen und komm an einer Stelle nicht weiter, wo ich einen String an die Proc übergeben will, der Anführungszeichen enthalten muß.

Bisher in den Subroutinen:
If SQliteGetTable(DBref, "SELECT * FROM maintable WHERE Owner = '"+ thisitem +"'" , thisTable) = #False

If SQliteGetTable(DBref, "SELECT * FROM maintable WHERE MediumTyp like '"+ thisitem +"'" , thisTable) = #False

If SQliteGetTable(DBref, "SELECT * FROM maintable WHERE MediumName like '"+ thisitem +"'" , thisTable) = #False

If SQliteGetTable(DBref, "SELECT * FROM maintable WHERE Genre Glob '*"+ thisitem +"*'", thisTable) = #False
In der Proc steht bisher:
If SQliteGetTable(DBref, filterstring.s , thisTable) = #False
Mag mir jemand zeigen, wie ich filterstring.s beim Aufruf ugs_sql_filtern(dbref,feldercount,LIGinhalt,filterstring) zusammenbasteln muß?

mDv... scholly
Zuletzt geändert von scholly am 17.05.2008 16:05, insgesamt 2-mal geändert.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Code: Alles auswählen

Chr(34) + thisitem + Chr(34)
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Was bitte soll denn If SQliteGetTable(DBref, Chr(34) + thisitem + Chr(34) , thisTable) = #False bewirken ?

Ich muß doch den kompletten Teil, z.B. "SELECT * FROM maintable WHERE MediumTyp like '"+ thisitem +"'" inlusive der Anführungszeichen mit rüberbekommen.
Mir ist klar, daß ich irgendwo einen Denkfehler mache, aber ich kann nicht erkennen wo, und Dein Code-Fetzen hilft mir nicht im geringsten.
Zuletzt geändert von scholly am 22.01.2008 21:57, insgesamt 1-mal geändert.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Du willst Anführungszeichen? Mit Chr(34) bekommst Anführungszeichen!

Wo ist jetzt noch das Problem?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Code: Alles auswählen

"SELECT * FROM maintable WHERE MediumTyp like '"+ thisitem +"'"
muß irgendwie an die Proc übergeben werden,
nicht

Code: Alles auswählen

SELECT * FROM maintable WHERE MediumTyp like '"+ thisitem +"'
Jetzt klarer dargestellt, wofür ich eine Lösung brauch ?
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Was willst du?!

das genau das im String steht? :

Code: Alles auswählen

"SELECT * FROM maintable WHERE MediumTyp like '"+ thisitem +"'"
mit ' und thisitem ist ein String, oder was jetzt, sollen wir raten?
Benutzeravatar
Rings
Beiträge: 971
Registriert: 29.08.2004 08:48

Beitrag von Rings »

SQL.s="SELECT * FROM maintable WHERE MediumTyp like "+ CHR(34) + thisitem +chr(34) + " "
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

@Andreas_S
Ja, genau, steht doch im Ursprungpost klar ersichtlich, oder nicht?
Zuletzt geändert von scholly am 22.01.2008 22:36, insgesamt 1-mal geändert.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

@rings

Die Variable thisitem (typ String) wird erst in der Proc gefüllt :(

Code: Alles auswählen

thisitem = (GetGadgetItemText(#main_tree, GetGadgetState(#main_tree), 0))
[edit 21:50]
Aber ich glaub, ich hab ne Lösung gefunden:

Für Filter, die ich nicht implementiere, sondern die der User selber eingeben kann/darf, übergebe ich den vom User in ein StringGadget eingegebenen Text nach rings' Vorbild.

Für die von mir implementierten Filter übergebe ich einen String, anhand dessen ich dann in der Proc checken kann, welche der o.g. Zeilen ausgeführt werden soll.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von NicTheQuick »

Also ich hab immer noch nicht verstanden, wo die Schwierigkeit liegt.
Es macht doch keinen Unterschied, ob man eine Funktion aus einem GoSub
oder einer Procedure heraus aufruft. Man muss nur der Procedure alle zu
benutzenden Variablen zur Verfügung stellen. Entweder durch Global oder
über Parameter.

Außerdem ergibt deine Subroutine im ersten Post so wie sie da steht keinen
Sinn. Wohin kommen denn die 'EndIf's? Warum steht in der Procedure nur
noch eine Zeile und was soll sie anders machen?
Bild
Antworten