Ja, du hast recht irgendwie gibt mir die Funktion nicht das zurück was ich wollte.
Nur wo liegt der Fehler?
In einer
Unit namens uMyLib hab ich folgenden Typ deklariert.
Delphi-Quellcode:
type TMyPosNummer = record
myPOS: Integer;
myAPOS: Char;
end;
... und folgende Funktion
Delphi-Quellcode:
function SplitPosNummer(PosNr: string): TMyPosNummer;
var i: integer;
c: Char;
s: string;
begin
s := PosNr;
if StrToIntDef(RightStr(s, 1), 99) = 99 then
begin
// Letztes Zeichen ist ein Buchstabe
c := RightStr(s, 1)[1];
i := strtoint(LeftStr(s, length(s) - 1));
end
else
begin
i := strtoint(s);
c := #13; // Default
Result.myPOS := i;
Result.myAPOS := c;
end;
end;
Nun rufe ich die Funktion aus meinem Programm wie folgt auf:
(
unit uMyLib mit uses eingebunden)
Delphi-Quellcode:
procedure TfmPositionen.aEinfuegenExecute(Sender: TObject);
var NeuePosNummer: string;
PosNummer : TMyPosNummer;
begin
if InputQuery('Bitte Positionsnummer eingeben', '', NeuePosNummer) then
begin
SplitPosNummer(NeuePosNummer);
if DM1.PosQuery.Locate('POSNR;APOS', VarArrayOf([PosNummer.MyPos, PosNummer.MyApos]), []) then
...
end;