AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi String/Memo zeigt unterschiedlich an Android/Windows
Thema durchsuchen
Ansicht
Themen-Optionen

String/Memo zeigt unterschiedlich an Android/Windows

Ein Thema von zeras · begonnen am 31. Dez 2019 · letzter Beitrag vom 31. Dez 2019
Antwort Antwort
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.651 Beiträge
 
Delphi 12 Athens
 
#1

String/Memo zeigt unterschiedlich an Android/Windows

  Alt 31. Dez 2019, 14:28
Ich habe mit einem Programm eine SQLite Datenbank erzeugt.
Für die Auswertung der Daten hatte ich "Geräteübergreifendes Formular" verwendet. Alles gut.
Nun habe ich ein neues Programm für die Auswertung nur für Windows geschrieben und es wird immer nur das erste Zeichen einer Zeichenkette angezeigt.
Für das Ansprechen habe ich die gleichen Objekte genutzt, TFDQuery, TFDPhysSQLiteDriverLink und TDFConnection.
In allen Funktionen wurde "String" genutzt. Diesem kopiere ich dann in ein Memofeld.
Hat das irgendwie mit einem Zeichensatz zu tun?
Oder wie bekomme ich wieder den ganzen String angezeigt?

Zusatz: Die Felder ich der DB sind als BLOB hinterlegt.
Angehängte Grafiken
Dateityp: png GeräteübergreifendeVersion.png (7,7 KB, 20x aufgerufen)
Dateityp: png WindowsVersion.png (2,5 KB, 22x aufgerufen)
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain

Geändert von zeras (31. Dez 2019 um 14:54 Uhr) Grund: Bilder hochgeladen
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.048 Beiträge
 
Delphi 12 Athens
 
#2

AW: String/Memo zeigt unterschiedlich an Android/Windows

  Alt 31. Dez 2019, 14:56
Wär's möglich etwas Code zu posten, damit wir genauer sehen was du getrieben hast?
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.651 Beiträge
 
Delphi 12 Athens
 
#3

AW: String/Memo zeigt unterschiedlich an Android/Windows

  Alt 31. Dez 2019, 15:01
Damit hole ich die Daten aus der DB:
Delphi-Quellcode:

Function Tfmain.GetAlarmFromDB(iAlarm: integer; var Alarm: tAlarm): Boolean;
begin
  Result := False;

  try

    SQLQuery.SQL.Text := Format('SELECT * FROM %s Where %s = %d', [MainTable, feldAlarmNummer, iAlarm]);
    SQLQuery.Open();

    if SQLQuery.RowsAffected = 0 then begin
      Exit; //Alarmnummer ist nicht vorhanden, dann Möglichkeit zum Neuanlegen geben
    end;

    Alarm.iAlarmNo := SQLQuery.FieldByName(feldAlarmNummer).AsInteger;
    Alarm.sAlarmUeberschrift := SQLQuery.FieldByName(feldAlarmUeberschrift).AsString;
    Alarm.sAlarmBeschreibung := SQLQuery.FieldByName(feldAlarmBeschreibung).AsString;
    Alarm.sAlarmHinweis := SQLQuery.FieldByName(feldAlarmHinweis).AsString;
    Alarm.sAlarmAktion := SQLQuery.FieldByName(feldAlarmAktion).AsString;
    Alarm.sEigeneHinweise := SQLQuery.FieldByName(feldAlarmEigeneHinweise).AsString;
    Alarm.iID := SQLQuery.FieldByName(feldID).AsInteger;
    Result := True;

  finally

  end;
end;
und damit schreibe ich diese dann in die Memos:

Delphi-Quellcode:
//Daten aus dem Alarm record in das Formular schreiben
Procedure Tfmain.Record2Form(Alarm: tAlarm);
begin
  LabAlarmNummer.Text := Format('A %.5d', [Alarm.iAlarmNo]);
  meUeberschrift.Text := Alarm.sAlarmUeberschrift;
  meBeschreibung.Text := Alarm.sAlarmBeschreibung;
  meHinweis.Lines.Text := Alarm.sAlarmHinweis;
  meAktion.Lines.Text := Alarm.sAlarmAktion;
  meEigeneHinweise.Text := Alarm.sEigeneHinweise;
  LabIDPlatzhalter.Text := Alarm.iID.ToString;
end;
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
905 Beiträge
 
Delphi 12 Athens
 
#4

AW: String/Memo zeigt unterschiedlich an Android/Windows

  Alt 31. Dez 2019, 15:45
Das riecht ganz stark danach, als würde irgendwo ein 2-Byte-String (UnicodeString) zwischendurch als PAnsiChar interpretiert, und das "Null-Füllbyte" des ersten Zeichens entsprechend als Terminator, also Ende der Zeichenkette. Oder etwas in dieser Richtung ...
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.651 Beiträge
 
Delphi 12 Athens
 
#5

AW: String/Memo zeigt unterschiedlich an Android/Windows

  Alt 31. Dez 2019, 16:00
Wie im Bild gezeigt, stehen die Zeichen im Objekt "Alarm.sAlarmUeberschrift"
Nach der Zuweisung steht dann im Objekt "meUeberschrift.Text" nur noch das erste Zeichen.
Ein AnsiChar ist nicht mehr dazwischen. Jedenfalls sehe ich nichts.
Angehängte Grafiken
Dateityp: png WindowsVersion02.png (9,6 KB, 12x aufgerufen)
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
905 Beiträge
 
Delphi 12 Athens
 
#6

AW: String/Memo zeigt unterschiedlich an Android/Windows

  Alt 31. Dez 2019, 16:11
Ja, aber jedes zweite Byte dort ist 0, wie üblich in einem UnicodeString, in dem nur a-z (und ein paar weitere Zeichen) vorkommen. Und irgendwo in deinem Code (oder in dem der verwendeten Komponenten) wird die erste Null als Ende der Zeichenkette interpretiert, d.h. an irgendeiner Stelle geht die Info "Das ist ein UnicodeString" verloren ...

Funktioniert es, wenn du explizit mit UnicodeString (oder WideString) statt String arbeitest?
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  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 12:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz