Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 240719 (2155)
  Suchen
 Zurück zur Übersicht
 AutorThema: DToC$ - Funktion
M. Schmidt
Datum:14.10.02 15:06 Antwortenals Email verschicken (mathias.schmidt@polizei.sachsen.de) 


Folgendes Problem harrt einer Lösung: Die Funktion @DToC$ erwartet ein Datum (wie in der Hilfe beschrieben) in der Form "JJMMTT". Leider funktioniert das so nicht! Es müssen die Anführungstriche mit angegeben werden. Aha, setzt Du sie halt vorn und hinten dran, denn in der Variablen a$ werden sie weginterpretiert, so dass in c$ der richtige Wert steht und somit eine korrekte Interpretation erfolgen müsste. Wieder falsch! Es wird wieder der Fehler "Falscher Typ für "@DToC$" ausgegeben! Wo liegt der Fehler????

declare a$,b$,c$,anf$,d$
cls
let anf$ = @Chr$(0168)
let a$ = "20021014"
let b$ = @Add$(anf$,a$)
let c$ = @Add$(b$,anf$)
let d$ = @DToC$(c$)
print a$,b$,c$,d$
waitkey
end

Danke

Mathias


Heiko Reddingius
Datum:14.10.02 15:31 Antwortenals Email verschicken (webmaster@nvse.de) 


Hi Mathias,

ganz einfach: gib' mal die Alt+0168 (¨) ein und im Vergleich dazu ALT+34 (") ... mit 168 hast die Punkte, die Du für einige Sonderzeichen brauchst (frag' mich nicht wie die Dinger heißen, ich wußte es mal), vor allem im französischen und niederländischen - aber keine Anführungszeichen. Die bekommst Du über Alt+34 bzw. @Chr$(34).

Gruß
Heiko


Gerd Telzerow
Datum:14.10.02 21:39 Antwortenals Email verschicken (GTelzerow@T-Online.de) 


Hallo Mathias,

so geht es.

let d$ = @DToC$(@Str$(@Val(a$)))

Mfg

Gerd


Roland G. Hülsmann
Datum:15.10.02 01:01 Antwortenals Email verschicken (rgh-soft@t-online.de) 


Wozu der ganze Umstand? Es werden keine Anführungszeichen gebraucht. So funktioniert es:
declare a$,d$
cls
let a$ = "20021014"
let d$ = @DToC$(a$)
print a$,d$
waitkey
end

Es ist lediglich darauf zu achten, daß der Parameter von @DToC$ wirklich ein String mit dem Format "JJJJMMTT" ist, also exakt 8 Zeichen lang!

Gruß
Roland



M. Schmidt
Datum:15.10.02 07:18 Antwortenals Email verschicken (mathias.schmidt@polizei.sachsen.de) 


Nun denn der Umstand ist schon nötig und so wie Du es beschrieben hast, funktioniert es ja tatsächlich. Ich extrahiere den String, der ja eigentlich ein numerischer wert ist, aus einem Dateinamen und da kann ich die Variable halt nicht mit einem absoluten Wert belegen. Ich muss also der Variablen den extrahierten Wert: 20021014 zuweisen. Und dieser wird in der Funktion falsch interpretiert. Auch die Lösungen von Heiko und Gerd (Er setzte hier a$ ein. Aber wenn ich d$ einsetze, gehts wieder nicht.) bringen nicht das Ergebnis. Vielleicht einfach nochmal mein kurzes Beispiel aus der Ausgangsfrage durchtesten.

Wie weiter? Aber schon mal Danke an die Helfer!

Mathias

PS: Bei Bedarf schick ich gern den kompletten Quelltext. Das Progrämmchen soll aus den Logfiles (Format z. B. ex021014.log) eines Internet Informtion Servers 5.0 Strings auslesen und diese an ein externes Programm (Perl) übergeben.


Roland G. Hülsmann
Datum:15.10.02 07:54 Antwortenals Email verschicken (rgh-soft@t-online.de) 


Vielleicht solltest Du deutlicher machen, was bei Dir nicht funktioniert. Offenbar ist Dein Problem, daß Du den String aus dem Dateinamen heraus falsch zusammensetzt, und er dannn eben NICHT das Format "JJJJMMTT" hat! (Wohlgemnerkt: Jahreszahl vierstellig!)
Nehmen wir also an, der Dateiname (egal wie er nun eingelesen wird - im Beispiel eben durch Zuweisung) sei ex021014.log:
declare a$,d$
cls
let a$ = "ex021014.log"
let a$ = @mid$(a$,3,6)     ' Das Datum ausschneiden "021014"
let a$ = @add$("20",a$)    ' Jahrhundert dazu "20021014"
let d$ = @DToC$(a$)
print a$,d$
waitkey
end

Die Sache mit dem Zufügen von Anführungszeichen ist in jedem Fall ein Fehler! Natürlich hätte man auch die beiden Zeilen, die a$ behandeln, zu einer zusammenfassen können:
let a$ = @add$("20",@mid$(a$,3,6))

Gruß
Roland




M. Schmidt
Datum: 15.10.02 08:54 Antwortenals Email verschicken (mathias.schmidt@polizei.sachsen.de) 


Jipp, das wars im wesentlichen. Dankeschön!!! Ich hatte tatsächlich den String falsch zusammengesetzt. Bei der Verwendung von @ins$ statt @add$ gehts schief. Das @ins$ war gar nicht nötig!

Danke an alle und vor allem nochmal an Roland

Tschau Mathias

PS: Nach so vielen Jahren der Profan-Abstinenz fand ichs toll Hilfe zu bekommen. Hab mal bei Version 2.6f angefangen. Leider fehlte dann später die Zeit fortzusetzen.


Bernd Haase
Datum:15.10.02 07:32 Antwortenals Email verschicken (info@ebs-haase.de) 


Hi !

Also wenn ich bei Deinem Beispiel statt c$ a$ einsetze, klappt das wunderbar bei mir. Dies entspricht also dem Beispiel von Roland.
Wo ist denn nun das Problem ?


 Zurück zur Übersicht