Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.15;
Скачать: CL | DM;

Вниз

Что за ошибка: Invalid pointer operation.   Найти похожие ветки 

 
Hawk2 ©   (2003-09-02 19:43) [0]

Вот решил разобраться с DLL. Для лучьшего понимания решил начать с простого. Создаю библиотеку с вот такой функцией:

library DLLProject1;
uses
SysUtils,
Classes;

{$R *.RES}
function Conv(Str:string):string;
var i:integer;
Str2:string;
begin
For i:=Length(Str) downto 0 do
begin
Str2:=Str2+Str[i];
end;
Conv:=Str2;
end;
exports Conv;
begin
end.

и программа которая эту ф-цию использует:

unit Main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function Conv(Str:string):string; external "DLLProject1.dll";
var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=Conv(Edit1.Text);
end;
end.

ввожу текст в поле, нажимаю кнопку и тут вылетает ошибка: Invalid pointer operation.

P.S. И еще, только обнаружил, если вводить строку в два символа, то все работает нормально, а если больше - глюк. Где что не так?


 
Skier ©   (2003-09-02 19:51) [1]

Начнём отсюда For i:=Length(Str) downto 0 do
Дальше сложнее...


 
Hawk2 ©   (2003-09-02 19:59) [2]

Если поставить For i:=Length(Str) downto 1 do ошибка остается, но теперь хавает строку размером в три символа, а четире и больше ругается.


 
Fog ©   (2003-09-02 20:01) [3]

Нет дело не в этом (ну может и в этом тоже...) вообщем не function Conv(Str:string): string; а function Conv(Str:string): PChar;


 
Skier ©   (2003-09-02 20:03) [4]

>Hawk2 © (02.09.03 19:59)
Теперь так :
Создай новый проект File | New | DLL
После создания увидишь большой комментарий.
Тебе следует его внимательно прочитать.


 
Hawk2 ©   (2003-09-02 22:56) [5]

Ребята спасибо, иногда пока не "ткнуть носом" не дойдет :)


 
Zheks ©   (2003-09-03 01:34) [6]

да, пустяки...


 
Amoeba   (2003-09-03 12:21) [7]

Есть альтернатива использованию стандартного sharemem, при этом более не требуется Borlndmm.dll
http://www.codexterity.com/fastsharemem.htm



Страницы: 1 вся ветка

Текущий архив: 2003.09.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
3-48455
kuchumovkv
2003-08-23 23:50
2003.09.15
Работа c TADOQuery


3-48446
DelphiM
2003-08-25 10:27
2003.09.15
Grid


1-48495
AHTOH
2003-08-28 23:02
2003.09.15
Звук при нажатии enter в TEdit


1-48618
Relaxxx
2003-09-02 11:52
2003.09.15
Нащет StringGrid


7-48795
Vyacheslav
2003-06-30 11:41
2003.09.15
Виртуальный диск