[Gdal-dev] OGR DXF export crashes

Joerg Schwerdt jschwerdt at swbb.de
Fri Oct 6 02:54:08 EDT 2006


Hi,

I want to export some objects using OGR DXF export.  A function (see below)
is doing this job.
The function is implemented in Delphi and uses der C interface to OGR.

Everything works fine the first time I call this function.  The second (or
third) time this function 
is called the "OGR_Dr_CreateDataSource" command crashes.  (Every call of the
function uses a 
newly created empty directory.)  After restarting my program I can call the
function again once 
(or sometimes twice) without a crash and on the next call it crashes again.

Is there something missing in my function?  May be some things are not freed
properly.

The error message of my (german) Delphi is the following:
"Zugriffsverletzung bei Adresse 02F8925F in Modul 'DD_Root.dll'. Lesen von
Adresse 00040014."
This means "access violation on address 02F8925F in modul 'DD_Root.dll'.
reading address 00040014."

Thanks a lot,

J?rg Schwerdt

---------------------------------------------------------------------------------
The mentioned function:

procedure ExportDXF;
var
  hDriver: OGRSFDriverH;
  SL: tStringList;
  ptrMain: pointer;
  datasource: OGRDataSourceH;
  DateTimeStamp: string;
  APath: DLLString;
  Target: string;
  layerDefn: OGRFeatureDefnH;
  feature: OGRFeatureH;
  geometry: OGRGeometryH;
  hOGRLayer: OGRLayerH;
begin
  OGRRegisterAll;
  hDriver := OGRGetDriverByName('DXF');

  DateTimeStamp := FormatDateTime('yyyymmdd_hhnnss', Now);
  GetTempPath(APath);
  Target := IncludeTrailingPathDelimiter(APath) + 'ShapeExport_AllVisible_'+
DateTimeStamp + '\DXF\export.dxf';
  ForceDirectories(ExtractFilePath(Target));

  SL := TStringList.Create;
  SL.Add('VERSION=15');
  ptrMain := OGR_JS_SLToCStringArray(SL);
  datasource := OGR_Dr_CreateDataSource(hDriver, PChar(Target), ptrMain);
  OGR_JS_SLToCStringArray_FreePointer(SL,ptrMain);
  SL.Free;

  if (datasource<>nil) then begin
    hOGRLayer := OGR_DS_CreateLayer(datasource, pchar('Test_js'), nil,
wkbLineString, nil);
    layerDefn := OGR_L_GetLayerDefn(hOGRLayer);

    // Create a new polyline
    feature := OGR_F_Create(layerDefn);
    geometry := OGR_G_CreateGeometry(wkbLineString);
    OGR_G_AddPoint(geometry, 10.0, 20.0, 10.0);
    OGR_G_AddPoint(geometry, 20.0, 10.0, 10.0);
    OGR_G_AddPoint(geometry, 30.0, 20.0, 10.0);
    OGR_F_SetGeometryDirectly(feature, geometry);
    OGR_L_CreateFeature(hOGRLayer, feature);

    OGR_DS_Destroy(datasource);
  end; {endif}
end;

-- 
View this message in context: http://www.nabble.com/OGR-DXF-export-crashes-tf2393756.html#a6674131
Sent from the GDAL - Dev mailing list archive at Nabble.com.




More information about the Gdal-dev mailing list