Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
ВнизКак вытащить данные из "экзотического" CHAR/PCHAR ? Найти похожие ветки
← →
Dimedrol © (2004-11-01 13:19) [0]Коллеги, есть данные, которые по утверждению
создателей интерфейса к 1 закрытой DLL(SO) возвращаются в виде
array of strings
там в исходнике (интерфейса) есть кусок -
PMYSQL_ROW = ^MYSQL_ROW;
MYSQL_ROW = char;
{ return data as array of strings }
Весьма странно (для меня ;-) )
Я подозреваю что это в результате никакой
не CHAR а PCHAR.
Когда я пытаюсь из основной программы обратиться к нему
как к PCHAR, исправив указанные кусок кода,
PMYSQL_ROW = ^MYSQL_ROW;
MYSQL_ROW = PCHAR;
{ return data as array of strings }
или даже так -
MYSQL_ROW = pchar;
PMYSQL_ROW = MYSQL_ROW; //чтобы не нарушать внутреннюю структуру
то вроде бы что-то получается, но присутствует мусор,
и как будто - не все данные. В общем - лажа какая-то.
Помогите плиз, как в это случае поступить ?
← →
clickmaker © (2004-11-01 13:28) [1]
> Когда я пытаюсь из основной программы обратиться к нему
>
как пытаешься?
← →
VMcL © (2004-11-01 13:28) [2]>>Dimedrol © (01.11.04 13:19)
Хм. А с чего это вдруг libMySql.dll стала закрытой?
← →
KSergey © (2004-11-01 13:47) [3]А если обращаться как сразу - не получатется? Откуда подозрения-то?
Здесь чувствуется сишная калька, так что не надо додумывать по поводу PChar.
Да и array of strings, подозреваю, надо трактовать вовсе не в смысле паскалевских string ;)
← →
Dimedrol © (2004-11-01 14:16) [4]2 clickmaker
Из кода, приведенного в оригинальном примере -
rowbuf := mysql_fetch_row(recbuf);
while (rowbuf<>nil) do
begin
Writeln ("(Id: ", rowbuf[0]);
Writeln (", Name: ", rowbuf[1]);
Writeln(", Email : ", rowbuf[2],")");
rowbuf := mysql_fetch_row(recbuf);
end;
Компилер (FreePas) ругается на rowbuf[0] - говорит - низя так. :-(
а я попробовал так -
var
rowbuf : pchar;
recbuf : PMYSQL_RES;
...
rowbuf := mysql_fetch_row(recbuf);
Writeln ("size = ",sizeof(recbuf));
begin
Writeln ("OUT = ",string(rowbuf));
end;
то есть убрал все циклы, чтобы в принципе добраться до данных
и вот что компилер+программа выводит:
[root@Titan mysql]# ./c
Free Pascal Compiler version 1.0.10 [2003/06/26] for i386
Copyright (c) 1993-2003 by Florian Klaempfl
Target OS: Linux for i386
Compiling qtest.pas
qtest.pas(14,5) Note: Local variable COUNT not used
qtest.pas(14,11) Note: Local variable NUM not used
qtest.pas(15,5) Note: Local variable CODE not used
qtest.pas(18,5) Note: Local variable QBUF not used
qtest.pas(27,1) Note: Local variable A not used
qtest.pas(28,1) Note: Local variable AA not used
Assembling qtest
Linking qtest
149 Lines compiled, 0.0 sec
Allocating Space...
Connecting to MySQL...Done.
Connection data:
Mysql_port : 3306
Mysql_unix_port : /var/lib/mysql/mysql.sock
Host info : Localhost via UNIX socket
Server info : Uptime: 1136023 Threads: 1 Questions: 3211834 Slow queries: 0 Opens: 99 Flush tables: 1 Open tables: 64 Queries per second avg: 2.827
Client info : 4.0.11a-gamma
Selecting Database esubbota...
Executing query : select author, id, header from articles where id=27538 limit 1...
Number of records returned : 1
Number of fields per record : 3
size = 4
OUT = Ш”@и”@о”@љ@Людмила ВЕВЕРЕ.
Freeing memory occupied by result set...
Closing connection with MySQL.
[root@Titan mysql]#
жирным я отметил, что прога выводит - это имя Автора.
а остальное никак не могу вынуть...
2 VMcL ©
мда...
2KSergey ©
ну а как же тогда нужно "трактовать" ? чтобы данные получить ?
мда...
← →
KSergey © (2004-11-02 08:03) [5]> 2KSergey ©
> ну а как же тогда нужно "трактовать" ? чтобы данные получить
> ?
А там сишных прототипов нет случаем? Если есть - приведите здесь.
← →
PVOzerski © (2004-11-02 09:52) [6]В исходниках FreePascal, в packages, есть юниты с интерфейсными объявлениями для MySQL. Хотя местами там кое-что устарело, по крайней мере описания типов у меня задействовались успешно и с MySQL 4.
← →
Dimedrol © (2004-11-02 12:57) [7]2 PVOzerski ©
У вас есть работающий код на FreePascal
для соединения с MySQL базой и\или выполнения простеньких запросов ?
Если да, то не могли бы вы мне его прислать ?
← →
Dimedrol © (2004-11-02 12:58) [8]2 PVOzerski ©
У вас есть работающий код на FreePascal
для соединения с MySQL базой и\или выполнения простеньких запросов ?
Если да, то не могли бы вы мне его прислать ?
← →
Dimedrol © (2004-11-03 12:10) [9]точно нет... :-(
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.042 c