Autor Beitrag
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2623
Erhaltene Danke: 1452

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: So 06.01.13 13:33 
Hallo,
user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
Kurze Nachfrage: Warum nicht VAR suchstring:

Wählst Du var, so musst Du im Text die Wörter zuweisen, z.B.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var suchstring:array[1..3of string[6];
...
suchstring[1]:='WHERE';
suchstring[2]:='ORDER';
suchstring[3]:='GROUP';

Mit const können die entsprechenden Werte automatisch zugewiesen werden.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein

Für diesen Beitrag haben gedankt: D. Annies
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: So 06.01.13 14:18 
Toll! und Danke!

_________________
ut vires desint, tamen est laudanda voluntas
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: So 06.01.13 19:02 
Ich möchte noch einmal auf haentschmans berechtigten Einwand zurückkommen. Wenn die Dateinamen in einer Datei stehen, wieso wird dann nicht gleich beim Auslesen der neue Dateiname gebildet? Diese ganze Pos-Frickelei erscheint mir eher kontraproduktiv, die Verwendung von Shortstrings macht das Ganze dann noch schlimmer und ist auch unnötig, da eine Stringkonstante automatisch die richtige Länge aufweist, ohne dass man sie extra einschränkt. Ich habe gerade kein Delphi zur Hand, aber wenn man Pos unter Delphi >= 2009 mit einem Shortstring und einem String-Parameter anwendet, sollte es zumindest eine (vermeidbare) Compilerwarnung geben, da dort Shortstrings 1 Byte und Strings 2 Byte je Zeichen besitzen. Ich denke, man kann das auch einfacher gestalten (Pseudo-Code):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var
  DateinameXLS, DateinameSQL: string;
begin
  DateinameSQL := gelesener_Wert_aus_Datei;
  DateinameXLS := ChangeFileExt(DateinameSQL, '.xls');

Weiterhin kann ich nur dringend empfehlen, SQL-Parameter zu verwenden. Neben der automatisch korrekten SQL-Syntax werden damit auch SQL-Injections vermieden (und schneller sind Prepared Statements nebenher auch noch).
ausblenden Delphi-Quelltext
1:
2:
3:
Query.SQL.Text := 'SELECT Feldliste FROM Tabelle WHERE Feldwert = :wert';
...
Query.{Parameters.}ParamByName('wert').Value := DateinameSQL;
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2623
Erhaltene Danke: 1452

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: So 06.01.13 19:11 
user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe gerade kein Delphi zur Hand, aber wenn man Pos unter Delphi >= 2009 mit einem Shortstring und einem String-Parameter anwendet, sollte es zumindest eine (vermeidbare) Compilerwarnung geben, da dort Shortstrings 1 Byte und Strings 2 Byte je Zeichen besitzen.

Toll, was Du alles weißt. Wir sind alle beeindruckt. :?
Ich würde aber erst einmal lesen, welche Compiler D.Annies nutzt. Dein Hinweis auf Delphi 2009-Strings bringt ihm absolut nichts!

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein

Für diesen Beitrag haben gedankt: D. Annies
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: So 06.01.13 19:16 
Entschuldigung, ich wusste nicht, dass man hier nur spezifische Antworten für spezifische User mit spezifischen Delphi-Versionen geben darf. Naja, nach einem evtl. Delphi-Update hätte er es ja dann selbst gemerkt, ich werde in Zukunft auf allgemeingültige Antworten verzichten. Dann kann man ja gleich alles per PM lösen und braucht kein Forum mehr.