Ja ! Ich hab auch die Funktion IsValidPos von Dir in abgewandelter Form eingebaut.
Hab sie nur der Übersichtlichkeit halber hier weggelassen!
Delphi-Quellcode:
function IsValidPos(s: string): Boolean;
var
number, index: Integer;
begin
Val(s, number, index);
Result := (index = 0) or (s = '')
or ((index > 1) and (s[index] in ['a'..'z']) and (index = Length(s)));
end;
Delphi-Quellcode:
procedure TfmPositionen.aEinfuegenExecute(Sender: TObject);
var NeuePosNummer: string;
PosNummer : TMyPosNummer; // ist das falsch oder muss ich das im implementation Abschnitt angeben ????????????????
begin
if InputQuery('Bitte Positionsnummer eingeben', '', NeuePosNummer)
and IsValidPos(NeuePosNummer) then
begin
SplitPosNummer(NeuePosNummer);
if DM1.PosQuery.Locate('POSNR;APOS', VarArrayOf([PosNummer.MyPos, PosNummer.MyApos]), []) then
...
end;
Muss ich nun im implementation Abschnitt schreiben
var PosNummer : TMyPosNummer;
oder reicht das auch in der aufrufenden 'procedure' ?
Beim Fall a bekomm ich dann den Wert 0 für c und für a nichts.
Beim Fall b bekomm ich irgendeinen Speicherwert.
mir ist auch noch aufgefallen - es fehlt in der Funktion auch noch
Delphi-Quellcode:
Result.myPOS := i;
Result.myAPOS := c;
im oberen Abschnitt.
Es liegt also irgendwie an meiner Übergabe der Variablen bzw. der Rückgabe.
Bitte helft mir schnell vom Eis. Danke.