![]() |
Excel erzeigen mit SwissDelphiCenter code geht nicht
Hallo zusammen
Ich möchte gerne eine simple Excel Datei mit dem Code von hier erzeugen: ![]() Das erste was mir aufgefallen ist, der Code versucht in beinahe jeder Funktion in eine Konstante zu schreiben... Das kann ja nicht funktionieren... So war es dann auch. Ich habe dann die vermeindlichen Konstanten als Variablen definiert und dann konnte ich das Programm erzeugen. Doch ein Excel wurde daraus nicht. Es waren irgendwelche kryptische zeichen zu sehen wenn man die Datei mit Excel geöffnet hat. Ich hoffe jemand sieht wo hier der Haken ist :) Danke schonmal Grüsse |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Hi,
benutzt du D2007 wie im Profil angegeben oder ist es vllt. ein Unicode-Problem? Außerdem glaube ich das mit den Konstanten nicht direkt. Ist es nicht so, dass die Arrays konstant sind, aber ihr Inhalt deswegen doch noch lange nicht?! LG, Frederic |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Ja ich benutze D2007 so wie angegeben....
Delphi mekkert immer "der linken seite kann nichts zugewiesen werden" wenn ich es als konstante deklariere |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Mal schnell mit XE probiert:
Delphi-Quellcode:
Das akzeptiert der Compiler nur, wenn "Zuweisbare typisierte Konstanten" aktiv ist (z.B. in den Projektoptionen).
procedure TfrmMain.FormCreate(Sender: TObject);
const Test: array[0..1] of Byte = ($08, $FF); begin Test[0] := 10; end; |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Zitat:
|
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
AFAIK geht das auch im Programm per Compilerschalter ein- und auszustellen, aber ich hab den gerade nicht im Kopf.
|
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Delphi-Quellcode:
{$J+}
|
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
einfach mal VAR statt Const d'rüberschreiben ?
|
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Zitat:
Delphi-Quellcode:
procedure TfrmMain.FormCreate(Sender: TObject);
var Test: array[0..1] of Byte = ($08, $FF); // hier meckert der Compiler begin **Test[0] := 10; end; |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
ich bezog mich auf den Originalcode
Delphi-Quellcode:
hier sind es keine lokalen Variablen/Konstanten
const
CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); CXlsEof: array[0..1] of Word = ($0A, 00); CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0); CXlsNumber: array[0..4] of Word = ($203, 14, 0, 0, 0); CXlsRk: array[0..4] of Word = ($27E, 10, 0, 0, 0); das hier läuft ..
Delphi-Quellcode:
var Test: array[0..1] of Byte = ($08, $FF);
procedure TForm2.FormCreate(Sender: TObject); begin Test[0] := 10; end; |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
siehe Bummi ... der macht es richtig.
Delphi-Quellcode:
Test ist, wenn die zuweisbaren Konstanten aktiviert sind, eine kranke und unübersichtliche Version von globalen Variablen.
procedure TfrmMain.FormCreate(Sender: TObject);
const Test: array[0..1] of Byte = ($08, $FF); begin Test[0] := 10; end; Const in Var zu ändern bringt da nichts, da dieses dann nur eine "lokale" Variable ergäbe. Typisierte Konstanten sind halt "nur" schreibgeschützte Variablen ... "sinnloser" Weise Was ist erzeigen? |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Leute ab D2009 (wegen Generics) können ja gerne mal dieses ausprobieren.
Wie man es nutzt, sollte hoffentlich ersichtlich sein. Wenn es läuft, dann läßt sich bestimmt auch noch eine Version ohne die bösen Generics erstellen. noch vollkommen ungetestet ... ich hof' ich hab alles richtig übersetzt und richtig neu zusammengesetzt |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Zitat:
|
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
@himitsu
Bei mir geht weder Laden einer vorhanden, noch das Speichern einer neuen, ich habe es so versucht:
Delphi-Quellcode:
BTW: warum hast Du von TComponent abgeleitet?
var
e:TExcelCreator; begin e :=TExcelCreator.Create(self); //e.LoadFromFile('C:\temp\test1.xls'); e.Cell[1,1]:='Was auch immer'#13#10'in zweiZeilen'; e.Cell[2,2]:=1234.5678; e.SaveToFile('C:\temp\test.xls'); e.Free; end; |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Hallo,
vielleicht hilft das weiter: ![]() Bis bald Chemiker |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
@Chemiker
danke, ich suche nicht, ich wollte himitsu nur eine Rückmeldung geben |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Liste der Anhänge anzeigen (Anzahl: 3)
@Chemiker:
Im Prinzip ist das der gleiche Code, wie der hier schon im 1. Post Genannte, woraus ich meine Klasse erstellt hab. Nur daß dein verlinker Code nur Strings kann, wärend dieser noch Integer und Floats kennt und daß man die Daten nochmals verändern kann, vor dem Speichern. Zitat:
und dann auch noch beim Abspeichern (SaveToFile) die falschen Anzahlen der Rows und Cols verwendet (beim Auslesen mit <= statt => gesucht), dann braucht man sich nicht wundern. :oops: Nja, wir leben halt in einer KlickbuntiOOPWelt ... drum ist das schon so ausgelegt, daß man diese Komponente irgendwann mal auf der Toolpalette in die Form klatschen kann. :stupid: PS: Bitte nicht über die OutputDebugStrings im Code wundern. Das Schreiben scheint nun zu gehn, jedenfalls mit dem ersten Teil dieses Codes.
Delphi-Quellcode:
Aber beim Auslesen der selbsterstellten Datei hapert es noch.
var
E: TExcelCreator; begin E := TExcelCreator.Create(nil); E.Cell[1,1] := 'Was auch immer'#13#10'in zweiZeilen'; E.Cell[2,2] := 1234.5678; E.SaveToFile('C:\Users\Frank\Desktop\ExcelFile.xls'); E.Free; E := TExcelCreator.Create(nil); E.LoadFromFile('C:\Users\Frank\Desktop\ExcelFile.xls'); E.Cell[2,1] := 'noch mehr'; E.SaveToFile('C:\Users\Frank\Desktop\ExcelFile2.xls'); E.Free; Auch wenn es eventuell oftmals nicht geht fremde Dateien einzulesen, aber die eigenen sollten schon noch gehn (irgendwann mal). OK, vielleicht bekommt noch jemand raus, wie man mehrzeilig in eine Spalte rein macht. Nja, also im Prinzip ist dieses alte Binärformat doch recht einfach ufgebaut. Eventuell könnte man sich ja auch mal ansehn, wie das neue gezippte XML-Format aussieht. [edit] So, jetzt geht's Speichern, des Auslesen und beim auslesen hab ich versucht noch ein bissl flexiebler zu sein, was Fremddateien angeht. Da ich aber nur einen kleinen Teil der Spezifikation drin hab und es auch nicht angedacht ist alles aufzunehmen, wird auch niemals alles unterstützt werden, aber hier geht's ja mehr ums Erstellen der Datei, als ums Einlesen. PS: Über mein Excel hab ich grade rausgefunden, daß es sich bei dieser Datei um ein "Arbeitsblatt/Workssheet in der uralten Version 2" handelt. |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Liste der Anhänge anzeigen (Anzahl: 1)
- Alles etwas aufgeräumt
- die OldStyle-Variante läuft hoffentlich in älteren Delphi-Versionen - die anderen beiden Units sind vermutlich ab D2009 nutzbar (nja, zumindestens in D2010 getestet) - XE2 nicht getestet und vermutlich auch nicht direkt compilierbar, dank der neuen Namensgebung der RTL-Units - mit StringGrid-Exporter, Importer und eventuell auch für die TStringGrid-Nachfahren, wie TDBGrid |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Zitat:
|
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Zitat:
Viele Grüße Uli |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
vielleicht nützt Euch das ja auch was ??? (Siehe Anhang) |
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Zitat:
|
AW: Excel erzeigen mit SwissDelphiCenter code geht nicht
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 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