![]() |
Problem mit DLL-Dateien...
Hallo!
ich habe folgende DLL-Datei:
Delphi-Quellcode:
Die Datei ("pwv.dll") wir im Programm eingebunden:
library pwv;
uses ShareMem, SysUtils, Classes, Grids; {$R *.res} // Sortiert das StringGrid "GenStrGrid" im der Spalte "ThatCol" procedure SortGrid(var GenStrGrid: TStringGrid; ThatCol: Integer); stdcall; const // Define the Separator TheSeparator = '@'; var CountItem, I, J, K, ThePosition: integer; MyList: TStringList; MyString, TempString: string; begin // Give the number of rows in the StringGrid CountItem := GenStrGrid.RowCount; //Create the List MyList := TStringList.Create; MyList.Sorted := False; try begin for I := 1 to (CountItem - 1) do MyList.Add(GenStrGrid.Rows[I].Strings[ThatCol] + TheSeparator + GenStrGrid.Rows[I].Text); //Sort the List Mylist.Sort; for K := 1 to Mylist.Count do begin //Take the String of the line (K – 1) MyString := MyList.Strings[(K - 1)]; //Find the position of the Separator in the String ThePosition := Pos(TheSeparator, MyString); TempString := ''; {Eliminate the Text of the column on which we have sorted the StringGrid} TempString := Copy(MyString, (ThePosition + 1), Length(MyString)); MyList.Strings[(K - 1)] := ''; MyList.Strings[(K - 1)] := TempString; end; // Refill the StringGrid for J := 1 to (CountItem - 1) do GenStrGrid.Rows[J].Text := MyList.Strings[(J - 1)]; end; finally //Free the List MyList.Free; end; end; // Löscht die Zeile "RowNumber" des StringGrids "Grid", die gerade markiert ist procedure GridDeleteRow(RowNumber : Integer; Grid : TStringGrid);stdcall; var i : Integer; begin Grid.Row := RowNumber; if (Grid.Row = 0) then else If (Grid.Row = Grid.RowCount -1) then begin Grid.RowCount := Grid.RowCount - 1; end else begin for i := RowNumber to Grid.RowCount - 1 Do begin Grid.Rows[i] := Grid.Rows[i+ 1]; end; Grid.RowCount := Grid.RowCount - 1; end; end; exports SortGrid, GridDeleteRow; begin end.
Delphi-Quellcode:
Und So werden Sie zur Laufzeit aufgerufen:
unit UHaupt;
interface uses // ... type // ... procedure SortGrid(var GenStrGrid: TStringGrid; ThatCol: Integer); stdcall; procedure GridDeleteRow(RowNumber : Integer; Grid : TStringGrid); stdcall; implementation {$R *.DFM} procedure SortGrid(var GenStrGrid: TStringGrid; ThatCol: Integer); stdcall; external 'pwv.dll'; procedure GridDeleteRow(RowNumber : Integer; Grid : TStringGrid); stdcall; external 'pwv.dll';
Delphi-Quellcode:
SortGrid(SGP, Column) //SGP ist der Name des StringGrids und Colum ist die Spalte ;
Delphi-Quellcode:
Folgendes Problem:
GridDeleteRow(SGP.Row,SGP); //SGP.Row übergibt die zurzeit markierte Spalte des StringGrids SGP
Das Programmstartet, ich lade eine datei in das stringgrid und klicke auf einen spaltenkopf. das grid wird von dieser spalte ausgehend alphabetisch sortiert. jedoch bei einem zweiten klick (auf die gleiche oder eine andere spalte) tritt ein fehler auf: "Im Projekt Projektwochenverwlatung.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00402296 in Modul 'Projektwochenveraltung.exe'. Schreiben von Adresse 30402969'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen." und nun zum zweiten problem. wenn ich eine zeile aus dem grid lösche, kommt folgenden fehlermeldung: "Im Projekt Projektwochenverwlatung.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung: 'TStringGridStrings kann nicht zu TStringGridString zugewiesen werden'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen." Ich weiß nicht mehr weiter! :cry: hat jemand eine idee, wie man das problem beheben kann? Veieln Dank! Gruß, dopeline |
Re: Problem mit DLL-Dateien...
Hi,
also ich habe dein Code mal getestet! Bei mir kommt kein Fehler. hast du vielleicht was umgestellt in Objektinsepktor? Wenn ja dan währe es hilfreich, wenn du uns sagen würdest was genau :) MFG Sven! |
Re: Problem mit DLL-Dateien...
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich habe mal ein kleines projekt erstellt. schau dir das mal an. in der rar befindet sich das projekt, in der die dll benutzt wird und das projekt, in der die dll erstellt wird.
beim löschen tritt ein fehler auf. und beim sortieren erst nach dem 4ten oder 5ten mal klicken... beschreibung ist drin.. hoffentlich findest du den (die) fehler.... :wink: Grüße, dopeline |
Re: Problem mit DLL-Dateien...
Hi,
habe mir das Projekt mal downgeloaden. Und habe darauf rumgeklickt wie sonst was und es kam kein Fehler! NACHSATZ: Doch jetzt kam eine...werde mir das mal angucken in ruhe :) MFG Sven! |
Re: Problem mit DLL-Dateien...
Ich habe mir mal ein onlinetutorial durchgelesen und mir ist aufgefallen, dass in meinem hauptprogramm ShareMem nicht unter uses steht! nachdem ich es eingefügt habe, funktioniert der sortieralgorihtmus einwandfrei!!!
allerding tritt beim löschen einer zeile immer noch das selbe problem auf.... weiß dazu jemand einen rat? Gruß, dopeline |
Re: Problem mit DLL-Dateien...
Hat denn keiner eine Idee? irgendwie muss das doch zu schaffen sein!
*verzweifelung* dopeline |
Re: Problem mit DLL-Dateien...
vielleicht hilft die error-message weiter:
Code:
das ist bestimmt nur ne kleinigkeit... und ich sehs mal wieder nicht.....
---------------------------
Benachrichtigung über Debugger-Exception --------------------------- Im Projekt Projektwochenverwaltung.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung: 'TStringGridStrings kann nicht zu TStringGridStrings zugewiesen werden'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen. --------------------------- OK Hilfe --------------------------- Gruß, dopeline |
Re: Problem mit DLL-Dateien...
Hallo dropline,
Ich hatte die selben Schwierigkeiten (EConvertError) wie du, mit der folgenden Einstellung konnte ich diese lösen, du musst beide Teile (Hauptanwendung und die Dll) mit Packages kompilieren. Projekt\Optionen\Packages\Laufzeit-Packages\Mit Laufzeit-Packges aktualisieren <-- checked Danach funktioniert es wie gewünscht. Eiji Osamu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz