Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi verlinkte datenbank, ohne feste karteikartengröße (https://www.delphipraxis.net/913-verlinkte-datenbank-ohne-feste-karteikartengroesse.html)

Jan 16. Okt 2002 23:04

Hallo nochmal,
ich habe das jetzt alleine hinbekommen, aus irgendeinem Grund hat die funktion lesepos wenn mann sie von der unit1 aus aufrief den korrekten wert ausgegeben, wenn ich ihn aber von der unit2 aufrief, so gab sie grundsätzlich 0 aus. Ich habe mir ganz einfach beholfen indem ich ich eine variable mit dem korrekten von unit1 ausgelesenen Wert gespeichert hab, und habe diese variable zum abspeichern verwandt, anstatt nochmal auf die Funktion Lesepos zuzugreifen.
So, jetzt hab ich nurnoch ein ganz kleines Problem: Irgendwie klappt der try befehl nicht so wie er soll:

Code:
procedure TForm2.Button1Click(Sender: TObject);
begin
 DateSeparator := '.';
 ShortDateFormat := 'd/m/yyyy';
 udaten.Karte.Person:=positio;
 try
  udaten.Karte.von:=strtodate(form2.Edit1.Text);
  udaten.Karte.bis:=strtodate(form2.Edit2.Text);
  udaten.schreiben;
 except
  showmessage('Bitte geben sie ein korrektes Datum an!');
 end;
end;
anstatt bei einer nicht-datums-eingabe meine message abzuspielen bekomme ich einen exception error und erst wenn ich wieder auf das Programm gehe sehe ich meine message.. wie kann ich den exception error unterbinden, so dass nur meine feine message auftaucht und nicht diese tödliche meldung, die einem Laien nichts sagt un ihn vermutlich nur verwirrt? Ich dachte mit try wäre diese möglichkeit gegeben.
nunja, ich habe mal wieder zu danken.
mfg
Jan

MrSpock 17. Okt 2002 06:55

Hallo Jan,

zunächst zu der Frage des sequentiellen Lesens. Du benutzt eine Schleife, in der du den Satzzeiger nacheinander jeweils auf den Anfang des nächsten Satzes stellst und dann den Satz ausliest. Würdest du einfach in einer While Schleife von Anfang der Tabelle bis zum EOF Ereignis lesen, würde der Satzzeiger nach jedem Lesevorgang automatisch am Anfang des nächstenb Satzes stehen. Aber dein Code funktioniert auch.

Bei deinem try ... except Block ist alles in Ordnung. Vermutlich startest du deine Anwendung aus Delphi und Delphi fängt deine Exception ab und meldet den Fehler zuerst. Dieses Verhalten kannst du ausschalten. Je nach verwendeter Delphi Version ist der Menüeintrag an einer anderen Stelle. Bei D3 unter Tools|Umgebungsoptionen...|Vorgaben|bei exceptions anhalten. Bei D5 bei den Debuggeroptionen.

Jan 17. Okt 2002 12:02

Liste der Anhänge anzeigen (Anzahl: 1)
Hallo MrSpock,
wie recht du doch hast, ausserhalb von Delphi funktioniert es ganz so wie es soll. *Vulkanieranbet*
Und mein Programm ist nun dank Deiner Hilfe endlich zu einem erfolgreichen Ende gekommen, thx alot! Wenn einer das prog haben will, stelle ich es zur Verfügung, wenn man das überhaupt hier darf. Ist ganz nützlich für Personalverwaltung (hoffe ich). Für zusätzliche Informationen zu einer Person kann sich ja jeder ganz einfach weitere Informationen hinzufügen, das sollte ein leichtes sein.
So, das wars denn, hab noch ein paar minor Dinge verbessert. Comments erwünscht!!! Also dwnld and test it!!
mfg
Jan

MrSpock 17. Okt 2002 12:35

Hallo Jan,

freut mich, wenn ich helfen konnte und ... kleine Programme darfst du jederzeit hier zur Verfügung stellen. Da freuen wir uns sogar drüber :mrgreen: .

Bis zum nächsten Problem.

Daniel B 17. Okt 2002 16:43

Hallo Jan,

es wäre Nett wenn Du Dein programm in der Sparte Freeware oder OpenSopurce vorstellen würdest. So hätten alle was davon. Vielleicht liest nicht jeder die Sparte Datenbanken, Dein programm könnte dennoch von nutzen sein. Danke.

Grüsse, Daniel :hi:

Jan 18. Okt 2002 13:14

Hallo Daniel,
kein Problem, das mache ich doch gerne, hab jetzt auch noch ein paar kleine Verbesserungen gemacht, 2 Dinge nurnoch:
1.: Als *.exe, oder als *.zip mit allen Delphi units und dem Projekt?
und 2.: Ich wäre euch sehr zu Dank verpflichtet, wenn ihr mal einen Blick in mein Programm werft und euch die Suchfunktion anschaut, welche zugegeben nicht toll ist, aber mittlerweile auch verbessert ist, und mir sagen könntet, warum die Suche nur für Name, Vorname, Strasse, nicht aber für Stadt und Telefonnummer klappt. Das ist mir ein vollkommenes Rätsel.

Naja, weiterhin könnte ich noch eine Hilfestellung bezüglich dem Suchen eines strings, der aber nur in einem anderen string enthalten sein muss, und bei dem es nicht auf Gross - und Kleinschreibung ankommt, gebrauchen. Ein Link zu diesem Thema würde ja auch reichen.

Danke für alle Antworten.

Gruß
Jan

Daniel B 18. Okt 2002 16:04

Zitat:

Zitat von Jan
Als *.exe, oder als *.zip mit allen Delphi units und dem Projekt?

Hallo Jan,

wenn es mehrere Dateien sind, dann lieber als .zip. Nur die .exe hat bei Delphi schon mind. 300-400Kb. Lieber auch gezippt. :mrgreen:
Wenn Du Deine Codes hinzufügen möchtest, dann Poste Dein programm in der Sparte: Open-Source. Stellst Du nur die .exe zur Verfügung, so benutze die Sparte: FreeWare.
Die entscheidung bleibt Dir überlassen. :!:

Grüsse, Daniel :hi:

Jan 20. Okt 2002 23:37

Hi Alle,
guckt bitte mal 2 Einträge weiter oben, ich brauche diesbezüglich immernoch help.
thx
MFG
Jan

Christian Seehase 20. Okt 2002 23:50

Moin Jan,

falls Du die Suche eines Strings in einem String meinst:

Code:
Pos(AnsiUpperCase(sZuSuchenderString),AnsiUpperCase(sStringInDemGesuchtWird))
Durch AnsiUpperCase werden auch Umlaute umgesetzt.

Jan 21. Okt 2002 21:32

Hallo Herr Seehase,
der Tip ist ja ganz nützlich, abe irgendwie komme ich damit nicht zurecht, er funktionier nur, wenn ich ihn in eine komplett neues projekt, oder in eine komplett leere unit einfüge, wenn ich ihn einfach so in mein Programm übernehme, dann kommt nach Pos( eine Fehlermeldung: "Missing operator or semicolon." ich habe aber keine ahnung warum... hier der qtext:

Code:
function tDatensatz.Suchen(suchbegriff:shortstring; Itemindex, start:integer):boolean;
var count, endpos, startpos:integer;
begin
        endpos:=-1;
        startpos:=pos;
        suchen:=false;
        count:=start;


        while count<=(dateiende-1) do begin
                pos:=count;
                lesen;
                case Itemindex of
                 0 : if Pos(AnsiUpperCase('bla'),AnsiUpperCase('wubla'))<>0 then begin endpos:=count; Suchen:=true; count:=dateiende; end;
                 1 : if Karte.Name=Suchbegriff then begin endpos:=count; Suchen:=true; count:=dateiende; end;
                 2 : if Karte.Strasse=Suchbegriff then begin endpos:=count; Suchen:=true; count:=dateiende; end;
                 3 : if Karte.Ort=Suchbegriff then begin endpos:=count; Suchen:=true; count:=dateiende; end;
                 4 : if Karte.Telefon=Suchbegriff then begin endpos:=count; Suchen:=true; count:=dateiende; end;
                end;
                count:=count+1;
        end;

                if endpos=-1 then
                pos:=startpos
                else
                pos:=endpos;

end;

wobei nur der erste teil der case abfrage mit deinem Beispiel ist, zu testzwecken.
ok, das wars für heute.
Gruss
Jan


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 Uhr.
Seite 3 von 5     123 45      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz