ich als unerfahrener Nicht-Programmierier habe mir unten stehenden DLL Code aus Schnippseln und Beispielen zusammen gebastelt:
Ziel des Aktion ist es, Daten aus den Zeigern DTA1 ... DTA4 in eine MySQL Datenbank, Tabelle = Wetter zu speichern. Für einen Test habe ich die Variable Writedb als PChar augeschrieben und es funktiniert, wie es soll. In einer nächsten Stufe möchte ich dann den PChar writedb aus zwei Variablen, epi1 und pro1, so zusammen setzten. Später sollen dann alle Fett markierten Parameter aus Variablen übergeben werden, um Daraus den Insert-String als PChar aufzubauen. Übrigens sind der Array PString^[xyz] bereits als PCHar definiert. Die Umformung in normale Strings (mit Rücktransfer) steht zur zeit nur drin, um die Strings besser verknüpfen zu könnnen - StrCat kann ja scheinbar nur zwei Strings verbinden....
Sobald ich aber die Zeile Auskommentiere bzw. den derzeitig Aktiven writedb:= "einkommentiere" und versuche, den String aus pro1 und epi1 zusammen zu setzen, funktioniert dies nicht mehr... und ich habe keine Idee, warum. Kann mir jemand helfen, bitte?
Besten Dank & Gruss
Thorsten
Code: Alles auswählen
Procedure CalculateEx(PInput,POutput,PUser: PDLLParams; PStrings: PStringParams); //called regularly from ProfiLab
VAR
sock : PMYSQL;
qmysql : TMYSQL;
data1 : String;
data2 : String;
data3 : String;
data4 : String;
writedb : PChar;
pro1 : PChar = 'INSERT INTO Wetter (Lufttemperatur,Windgeschwindigkeit,Luftfeuchte,Niederschlag) Values(';
epi1 : PChar = '4,7,30,33)';
begin
if PInput^[CLK]<2.5 then //check CLK input HIGH or LOW
begin
if (PInput^[CLK]<2.5) and not(PUser^[CLK_old]<2.5) then //check out rising edge at CLK input
begin
data1:=strPas(PStrings^[DTA1]);
data2:=strPas(PStrings^[DTA2]);
data3:=strPas(PStrings^[DTA3]);
data4:=strPas(PStrings^[DTA4]);
// writedb:=strcat(pro1, epi1);
writedb:= 'INSERT INTO [b]Wetter[/b] ([b]Lufttemperatur[/b],[b]Windgeschwindigkeit[/b],[b]Luftfeuchte[/b],[b]Niederschlag[/b]) Values([b]18[/b],[b]20[/b],[b]2[/b],[b]0[/b])';
mysql_init(PMySQL(@qmysql));
sock := mysql_real_connect(PMysql(@qmysql),PStrings^[SRV],PStrings^[USR],PStrings^[PWD],nil,0,nil,0);
mysql_select_db(sock,PStrings^[DB]);
mysql_query(sock,writedb);
mysql_close(sock);
end;
end;
PUser^[CLK_old]:=PInput^[CLK]; //Remember CLK status for next call
end;
//export methods for ProfiLab
exports NumInputs,
NumOutputs,
CalculateEx,
InputName,
OutputName;
begin
end.