Pre-Processor

Moderator: Moderatoren

Antworten
Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

Pre-Processor

Beitrag von Michael Rudrich »

Hi Leute...

suche eine nette Möglichkeit um DCPRINT SAY "Guckst DU" in
DCPRINT SAY GetText("Guckst Du") umzuwandeln und habe aber keine
Lust den ganzen Source durchzuwühlen.
Achtung: Das darf natürlich nur greifen, wenn das erste Codezeichen das
dem DCPRINT SAY folgt ein " oder ein ' für einen String ist, -- denn Datenbank-
felder möchte ich logischerweise nicht umfummeln!

Irgendein Preprocessor-Crack unter Euch?

Wäre super..
Danke

LG
Michl
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Pre-Processor

Beitrag von Tom »

Mmh. Welchen Editor benutzt Du? MultiEdit kann "regular expressions", und mit denen lässt sich sowas m.E. hinkriegen. Meiner Meinung nach kann der Präprozessor keine Ausdrücke validieren, also testen, wie ein Parameter inhaltlich aussieht, und genau das müsste er für diesen Fall können.
Herzlich,
Tom
Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

Re: Pre-Processor

Beitrag von Michael Rudrich »

Ja -- mit Multiedit gehts schon...
wäre mir aber lieber ich könnts per PrePro machen -weil ich beim Neucodieren das auch immer
vergesse...

Außerdem wollt ich wissen ob und wie es geht mit PreDings :-)

LG
Michl
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Pre-Processor

Beitrag von Tom »

Und was ist, wenn Du GetText() erst in einer weiteren Funktion machst? Der Präpro ersetzt alle DCPRINT SAY [P1] durch DCPRINT SAY MichlsFunktion([P1]), und in der wird dann fallweise GetText() oder was anderes gemacht?
Herzlich,
Tom
Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

Re: Pre-Processor

Beitrag von Michael Rudrich »

Naja--

Dein P1 ist dann entweder sowas wie "Hallo" oder etwas wie KUNDEN->NAME... wie unterscheide ich die?
Valtype ist beides mal ja "C".. - oder steh ich auf der Leitung?

Danke

LG
Michl
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Pre-Processor

Beitrag von Tom »

Code: Alles auswählen

IsFieldVar(p1)
Herzlich,
Tom
Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

Re: Pre-Processor

Beitrag von Michael Rudrich »

Hi..

Danke..

Gute Idee, - aber ich weiß leider nicht in welcher Tabelle das Feld ist...
IsFieldVar() sucht in der aktuellen Workarea..
Ich müßte feststellen, ob es sich um eine simple Zeichenkette handelt, oder irgendetwas anderes
wie eine Tabelle oder so dahinter steckt...

Ich dachte an den Präpro, weil nur da das " oder ' auftaucht... --- dachte ich ...
und ich dachte man kann da was mit IF oder so machen... hmm.. dachte ich ;-)

Trotzdem danke, ich werds halt dann per Fuß machen!

LG
Michl
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Pre-Processor

Beitrag von Tom »

Halt! Isfieldvar(kunden->name) funktioniert auch, wenn "lieferanten" die aktuelle Workarea ist!
Herzlich,
Tom
Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

Re: Pre-Processor

Beitrag von Michael Rudrich »

Okay...

dann werd ich den Weg mal versuchen...

Vielen Dank

LG
Michl
Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

Re: Pre-Processor

Beitrag von Michael Rudrich »

Weil Du grad so schön online bist :-)

Kennst Du einen Trick / Call um seine eigene IP-Adresse zu ermitteln?

LG
Michl
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Pre-Processor

Beitrag von Tom »

Das müsste über die WMI gehen. Schau mal in diesen Thread hier:

http://www.xbaseforum.de/viewtopic.php?f=27&t=3309
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Pre-Processor

Beitrag von Tom »

Juhu, Michl.

BTW - mir scheint das nicht ganz ungefährlich, was Du vorhast. Wenn ich sowas mache:

Code: Alles auswählen

#command @ <n>,<m> DCPRINT SAY <c> ;
           => @ <n>,<m> DCPRINT SAY GetText(<c>)
zwinge ich den Präprozessor in die Knie. Er erzeugt dann irgendwann eine PPO-Datei, aber die enthält tonnenweise Verschachtelungen, weil die Direktive immer wieder Quelltext erzeugt, der abermals übersetzt werden muss.

Aber vielleicht sollte ich auch die Gelegenheit nutzen, mich mal intensiver mit dem PräPro auseinanderzusetzen. Bisher nutze ich ihn nur, um wiederkehrende Codesegmente zu verkürzen und ein paar Dateioperationen umzuleiten.
Herzlich,
Tom
Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

Re: Pre-Processor

Beitrag von Michael Rudrich »

Hi auch...

nö nö: ich würde latürnich nicht wieder DCPRINT aufrufen, sondern dass was normalerweise
hinter DCPRINT steht ;-)
=> ;
DC_PrinterObject(<o>):AtSay( <nRow>, <nCol>, ;
TransForm(<uText>,DC_XtoC(<p>)), ;
<.truetype.> [.OR. <_truetype>], ;
<.pixel.> [.OR. <_pixel>], ;
<.fixed.> [.OR. <_fixed>], ;
<ocFont>, ;
[<aAttr>] [DC_Color2Attr(<nColorFG>,<nColorBG>)], ;
<nCodePage>, ;
<nAlign>, ;
<.outline.> [.OR. <_outline>], ;
<bWhen>, ;
<nWidth> )

Hab das schon mal gemacht (wenn Du reinguckst in DCPRINT.CH..) in Sachen DCRIGHTPRINT SAY..

LG
Michl
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Pre-Processor

Beitrag von Tom »

Auch hi hi auch,

diese Idee hatte ich auch, habe sie aber nicht vorgeschlagen, weil Roger ja gelegentlich an seinen CHs herumschraubt. So geht's natürlich - wenn's mit dem IsFieldVar() klappt.
Herzlich,
Tom
Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

Re: Pre-Processor

Beitrag von Michael Rudrich »

Ja ...

das mit der Schrauberei ist so ein Problem...

Aber irgendeinen Tod muss ich sterben...

Grüße
Michl
Antworten