AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrid und UTF8

Ein Thema von wschrabi · begonnen am 27. Feb 2016 · letzter Beitrag vom 1. Mär 2016
Antwort Antwort
wschrabi

Registriert seit: 16. Jan 2005
437 Beiträge
 
#1

Stringgrid und UTF8

  Alt 27. Feb 2016, 18:19
Datenbank: MySQL • Version: 5 • Zugriff über: MyDAC
Hallo,
ich habe folgendes Problem:

Delphi-Quellcode:
      myaustr:=Unicodestring(stringreplace(StringGrid3.Cells[1,CitNameIdx],'?','_',[rfReplaceAll])); // this is not working.
myaustr:='Birkmayer, G%'; // this case works fine
WriteLogMemo('Ask for: '+myaustr);
//MyQuery3.ParamByName('AU').AsString:=austr;
MyQuery3.SQL.text := Format('SELECT cites, auname, id from aunames where aunames.auname like ''%s'' order by cites desc; ',[myaustr]);
Wenn ich myaustr fix hineinprogrammiere klappt es.
doch wenn ich es aus einem eingelesenen Stringgrid nehme nicht.
Ist StringGrid3.Cells kein UNicode string?
Bin für jeden Tip dankbar (verwende Delphi XE6)
DANKE
Walter

PS: WIe ich bemerkte, kann es auch am EMS QImport3Wizard (version 3.9.5.3) liegen.
Denn wenn ich ins Stringgrid fix den Namen hineinprogrammiere geht es auch.
Obwohl im Stringrid sieht alles ok aus. (Umlaute und so)


Sorry ich habe den Fehler schon, in dem XSL File waren die Nachnamen mit einem Blank und dann das KOmma.
Immer wo anders gesucht und nix gefunden.
DAnke

Geändert von wschrabi (27. Feb 2016 um 20:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#2

AW: Stringgrid und UTF8

  Alt 28. Feb 2016, 07:14
Moin...
Zitat:
Bin für jeden Tip dankbar
Das nehme ich dann mal wörtlich...

myaustr:=Unicodestring(stringreplace(StringGrid3.Cells[1,CitNameIdx],'?','_',[rfReplaceAll])); ... niemals visuelle Controls als Datenspeicher mißbrauchen. In deinem Falle bedeutet das nur Daten in Richtung Stringrid für die Anzeige und niemals in den Zellen lesen. In der Regel hängt man an den Listeneintrag das Datenobjekt an und liest darin.
Beispiel:
Im Datenobjekt ist das Geburtsdatum ein TDateTime. Je nach Ländereinstellung könnte man das im Grid anders darstellen. Im Datenobjekt bleibt es ein TDateTime. Wenn du mit dem Gridinhalt "rechnen" wolltest, müßtest du den String erst immer wieder zum TDateTime wandeln.

MyQuery3.SQL.text := Format('SELECT cites, auname, id from aunames where aunames.auname like ''%s'' order by cites desc; ',[myaustr]); ... LIKE ist in einer SQL Abfrage eher ungünstig. Da kann das DBMS keinen Index benutzen. Hier sollte man zumindes mal Überlegungen anstellen ob sich das durch ein optimiertes Datenbankdesign entfernen läßt.

MyQuery3.ParamByName('AU').AsString:=austr; ... Richtig: SQL Anweisungen grundsätzlich mit Parametern.

  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Stringgrid und UTF8

  Alt 28. Feb 2016, 08:36
Zitat:
MyQuery3.SQL.text := Format('SELECT cites, auname, id from aunames where aunames.auname like ''%s'' order by cites desc; ',[myaustr]); ... LIKE ist in einer SQL Abfrage eher ungünstig. Da kann das DBMS keinen Index benutzen. Hier sollte man zumindes mal Überlegungen anstellen ob sich das durch ein optimiertes Datenbankdesign entfernen läßt.
Eine Like stellt nur ein Problem dar wenn ein Wildcard am Anfang vorhanden ist.
Suche z.B. nach "Müller*" (bzw. im SQL "Müller%") stellt kein Problem dar da hier immer noch der Index verwendet werden kann.


Aber gut das du den Fehler schon gefunden hast.
Leerzeichen sind gemein das man sie oft auch nicht gleich erkennt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#4

AW: Stringgrid und UTF8

  Alt 28. Feb 2016, 08:55
Zitat:
Eine Like stellt nur ein Problem dar wenn ein Wildcard am Anfang vorhanden ist.
Schon richtig. Von dieser Möglichkeit muß man aber grundsätzlich ausgehen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#5

AW: Stringgrid und UTF8

  Alt 28. Feb 2016, 10:34
Zitat:
stellt kein Problem dar da hier immer noch der Index verwendet werden kann.
Kommt auf den Index drauf an.
Bäumchen meistens ja und Hashs nö.

LIKE auf ein INTEGER-Feld ist auch nicht so praktisch.

Und das mit den Parametern wurde schon genannt, wobei das nicht nur auf SQL-Injection bezogen ist, denn hier myaustr:='Meier''s'; // Meier's knallt es auch.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
437 Beiträge
 
#6

AW: Stringgrid und UTF8

  Alt 1. Mär 2016, 09:21
Schönen DANK an alle, wieder was gelernt!
Begzl: Stringgrid als Datenspeicher: Ich habe ein XLS in ein Stringgrid eingelesen damit ich dort auch die Daten sehen kann, daher nutze ich es.

Schönen TAG noch.
Walter
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 Uhr.
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